{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "0061e24e",
   "metadata": {},
   "source": [
    "# 股市财报数据可视化产品开发"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d5a68fde",
   "metadata": {},
   "outputs": [],
   "source": [
    "import sqlite3\n",
    "import pandas as pd  \n",
    "import talib\n",
    "from datetime import datetime\n",
    "import backtrader as bt\n",
    "import matplotlib.pyplot as plt\n",
    "import akshare as ak\n",
    "import numpy as np\n",
    "%matplotlib inline   \n",
    "\n",
    "#正常显示画图时出现的中文和负号\n",
    "from pylab import mpl\n",
    "\n",
    "mpl.rcParams['font.sans-serif']=['SimHei']\n",
    "mpl.rcParams['axes.unicode_minus']=False"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e3085ec",
   "metadata": {},
   "source": [
    "## 财务数据构成\n",
    "\n",
    "财务三张表指的是资产负债表、利润表以及现金流量表，具体概念分别如下：\n",
    "\n",
    "\n",
    "　　1、资产负债表，资产负债表亦称财务状况表，表示企业在一定日期（通常为各会计期末）的财务状况（即资产、负债和所有者权益的状况）的主要会计报表。\n",
    "\n",
    "　　2、利润表，利润表是反映企业在一定会计期间经营成果的报表。由于它反映的是某一期间的情况，所以又被称为动态报表。利润表也被称为损益表、收益表。\n",
    "\n",
    "　　3、现金流量表，是反映在一固定期间（通常是每月或每季）内，企业的现金（包含银行存款）的增减变动情形。\n",
    "\n",
    "1、资产负债表（balance sheet）：是总括地反映会计主体在特定日期（如年末、季末、月末）财务况的报表。\n",
    "\n",
    "2、损益表（income statement）：也称收益表、损益表，它是总括反映企业在某一会计期间（如年度、季度、月份）内经营及其分配（或弥补）情况的一种会计报表。\n",
    "\n",
    "3、现金流量表（statement of cash flow）：反映企业现金流量的来龙去脉，当中分为经营活动、投资活动及筹资活动三部份。\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "49ae6e4c",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "c41bf6f5",
   "metadata": {},
   "source": [
    "## akshare中提供的财务数据\n",
    "\n",
    "* akshare 中提供的财务数据更多样，并且能实时，但是很多函数总是存在变动，官网文档有时更新不及时，建议多用help了解变化，通过百度也常常能定位到作者知乎上的最新文档\n",
    "\n",
    "https://www.zhihu.com/people/bjck\n",
    "\n",
    "* akshare的财务数据\n",
    "\n",
    "### “akshare股票数据”——“基本面数据”——“财务报表”（这里主要提供某个股票所有历史财务数据）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "e727d118",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on function stock_financial_report_sina in module akshare.stock_fundamental.stock_finance:\n",
      "\n",
      "stock_financial_report_sina(stock: str = '600004', symbol: str = '现金流量表') -> pandas.core.frame.DataFrame\n",
      "    新浪财经-财务报表-三大报表\n",
      "    https://vip.stock.finance.sina.com.cn/corp/go.php/vFD_BalanceSheet/stockid/600004/ctrl/part/displaytype/4.phtml\n",
      "    :param stock: 股票代码\n",
      "    :type stock: str\n",
      "    :param symbol: choice of {\"资产负债表\", \"利润表\", \"现金流量表\"}\n",
      "    :type symbol:\n",
      "    :return: 新浪财经-财务报表-三大报表\n",
      "    :rtype: pandas.DataFrame\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(ak.stock_financial_report_sina)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3d97aac4",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                                                                       \r"
     ]
    }
   ],
   "source": [
    "byd_zcfz = ak.stock_financial_report_sina(stock=\"002594\", symbol=\"资产负债表\")\n",
    "byd_lrb = ak.stock_financial_report_sina(stock=\"002594\", symbol=\"利润表\")\n",
    "byd_xjllb=ak.stock_financial_report_sina(stock=\"002594\", symbol=\"现金流量表\")\n",
    "byd_cwzb = ak.stock_financial_analysis_indicator(symbol=\"002594\")#主要财务指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "0463defa",
   "metadata": {},
   "outputs": [],
   "source": [
    "#byd_xjllb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "705c95e9",
   "metadata": {},
   "outputs": [],
   "source": [
    "#byd_zcfz.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "cde59d51",
   "metadata": {},
   "outputs": [],
   "source": [
    "#byd_lrb.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "8b6af5be",
   "metadata": {},
   "outputs": [],
   "source": [
    "#byd_xjllb.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "c51c8ee1",
   "metadata": {},
   "outputs": [],
   "source": [
    "#byd_cwzb.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f078e66b",
   "metadata": {},
   "source": [
    "### “akshare股票数据”——“季报年报”（主要提供是每天所有股票的相关财务数据，比较方便做横截面分析与因子策略）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "a77a223a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                                                                       \r"
     ]
    }
   ],
   "source": [
    "stock_zcfz_em_df = ak.stock_zcfz_em(date=\"20220331\")\n",
    "stock_lrb_em_df = ak.stock_lrb_em(date=\"20220331\")\n",
    "stock_xjll_em_df = ak.stock_xjll_em(date=\"20220331\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c99f4de2",
   "metadata": {},
   "outputs": [],
   "source": [
    "#stock_zcfz_em_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3ddd86eb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['序号', '股票代码', '股票简称', '资产-货币资金', '资产-应收账款', '资产-存货', '资产-总资产',\n",
       "       '资产-总资产同比', '负债-应付账款', '负债-预收账款', '负债-总负债', '负债-总负债同比', '资产负债率',\n",
       "       '股东权益合计', '公告日期'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_zcfz_em_df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "99472f18",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['序号', '股票代码', '股票简称', '净现金流-净现金流', '净现金流-同比增长', '经营性现金流-现金流量净额',\n",
       "       '经营性现金流-净现金流占比', '投资性现金流-现金流量净额', '投资性现金流-净现金流占比', '融资性现金流-现金流量净额',\n",
       "       '融资性现金流-净现金流占比', '公告日期'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_xjll_em_df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "62b90eb8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['序号', '股票代码', '股票简称', '净现金流-净现金流', '净现金流-同比增长', '经营性现金流-现金流量净额',\n",
       "       '经营性现金流-净现金流占比', '投资性现金流-现金流量净额', '投资性现金流-净现金流占比', '融资性现金流-现金流量净额',\n",
       "       '融资性现金流-净现金流占比', '公告日期'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_xjll_em_df.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "416b325a",
   "metadata": {},
   "source": [
    "## 课程sql数据介绍\n",
    "\n",
    "包含了一下五张表\n",
    "[('xjllb',现金流表), ('zcfzb',资产负债表), ('lrb',利润表), ('cwzbsj',主要财务指标), ('stock_daily',股票价格)]\n",
    "\n",
    "其中stock_daily包含了上证2千多只股票2018年1月——2023年2月的所有日线数据\n",
    "\n",
    "此数据是淘宝花了几十块钱买的，为了减少体积减少了年份与股票数\n",
    "\n",
    "其实也可以通过akshare爬取，如果需要更新数据建议自行爬取并写入数据库\n",
    "\n",
    "### sqlite3的基本操作\n",
    "\n",
    "* 数据库的连接 ：sqlite3.connect(r'F:\\量化金融\\stock_2018.db')\n",
    "\n",
    "* 数据库命令的执行：c.execute(\"select name from sqlite_master where type='table'\")\n",
    "\n",
    "* pandas下的数据库操作：读pd.read_sql；写z1.to_sql('stock_daily',conn,if_exists=\"append\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7dc05aab",
   "metadata": {},
   "outputs": [],
   "source": [
    "conn=sqlite3.connect(r'F:\\量化金融\\stock_2018.db')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "14542baf",
   "metadata": {},
   "outputs": [],
   "source": [
    "xjllb=pd.read_sql(\"select * from xjllb\",con=conn)\n",
    "lrb=pd.read_sql(\"select * from lrb\",con=conn)\n",
    "zcfzb=pd.read_sql(\"select * from zcfzb\",con=conn)\n",
    "cwzbsj=pd.read_sql(\"select * from cwzbsj\",con=conn)\n",
    "stock_daily=pd.read_sql(\"select * from stock_daily where 股票代码<'003000.SZ'\",con=conn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9513d451",
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_daily=pd.read_sql(\"select * from stock_daily where 股票代码>'003000.SZ'\",con=conn)\n",
    "cwzbsj=pd.read_sql(\"select * from cwzbsj\",con=conn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "58815361",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['index', '交易日期', '股票代码', '股票简称', '开盘价', '最高价', '最低价', '收盘价', '成交量(手)',\n",
       "       '成交额(千元)', '换手率(%)', '量比', '市盈率(静态)', '市盈率(TTM)', '市盈率(动态)', '市净率',\n",
       "       '市销率', '市销率(TTM)', '股息率(%)', '股息率(TTM)(%)', '总股本(万股)', '流通股本(万股)',\n",
       "       '总市值(万元)', '流通市值(万元)'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_daily.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "deacf58a",
   "metadata": {},
   "outputs": [],
   "source": [
    "z1=stock_daily[stock_daily['股票简称'].isin([\"格力电器\",\"比亚迪\"])].pivot(index=\"交易日期\",columns=\"股票简称\",values=\"收盘价\").fillna(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1adfd165",
   "metadata": {},
   "outputs": [],
   "source": [
    "#stock_daily['股票简称']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "8e5aab3c",
   "metadata": {},
   "outputs": [],
   "source": [
    "#print(lrb.columns.tolist())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cdbf3c34",
   "metadata": {},
   "outputs": [],
   "source": [
    "cwzbsj"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "35fc48ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_daily[\"date\"]=stock_daily[\"date\"].astype(\"str\").astype(\"datetime64\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "232acc3b",
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "'last' only supports a DatetimeIndex index",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "Input \u001b[1;32mIn [12]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mcwzbsj\u001b[49m\u001b[43m[\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m股票代码\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m公告日期\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m报告期\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlast\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m1m\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "File \u001b[1;32mG:\\anaconda\\lib\\site-packages\\pandas\\core\\generic.py:8448\u001b[0m, in \u001b[0;36mNDFrame.last\u001b[1;34m(self, offset)\u001b[0m\n\u001b[0;32m   8397\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m   8398\u001b[0m \u001b[38;5;124;03mSelect final periods of time series data based on a date offset.\u001b[39;00m\n\u001b[0;32m   8399\u001b[0m \n\u001b[1;32m   (...)\u001b[0m\n\u001b[0;32m   8445\u001b[0m \u001b[38;5;124;03mnot returned.\u001b[39;00m\n\u001b[0;32m   8446\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m   8447\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindex, DatetimeIndex):\n\u001b[1;32m-> 8448\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlast\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m only supports a DatetimeIndex index\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m   8450\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindex) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m   8451\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\n",
      "\u001b[1;31mTypeError\u001b[0m: 'last' only supports a DatetimeIndex index"
     ]
    }
   ],
   "source": [
    "cwzbsj[['股票代码', '公告日期', '报告期']].last(\"1m\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "271d89e2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       2018-03-31\n",
       "1       2018-06-30\n",
       "2       2018-09-30\n",
       "3       2018-12-31\n",
       "4       2019-03-31\n",
       "           ...    \n",
       "89165   2021-09-30\n",
       "89166   2021-12-31\n",
       "89167   2022-03-31\n",
       "89168   2022-06-30\n",
       "89169   2022-09-30\n",
       "Name: 报告期, Length: 89170, dtype: datetime64[ns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cwzbsj[\"报告期\"].astype(\"str\").astype(\"datetime64\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "40e5af5e",
   "metadata": {},
   "outputs": [],
   "source": [
    "'扣除非经常性损益后的净利润(扣非净利润)','净资产收益率(扣除非经常损益)','销售毛利率','销售净利率', '企业自由现金流量', '非经常性损益','净债务','每股净资产'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2f0d004c",
   "metadata": {},
   "outputs": [],
   "source": [
    "安全性指标 流动比率,速动比率,资产负债率,净资产负债率,利息保障倍数,还债能力\n",
    "盈利能力指标 营业利润率,销售毛利率,销售净利率,总资产收益率,净资产收益率\n",
    "杜邦分析 扣非净利润率,总资产周转率,财务杠杆率\n",
    "成长性指标分析 营业收入及增长率 净利润及增长率\n",
    "管理水平指标分析 应收账款周转率 存货周转率 固定资产周转率\n",
    "估值指标分析 分红比率 企业价值倍数 PEG=市盈率/净利润增长率 市现率=股价/每股现金流量净额"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "b1801a5b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['index', '股票代码', '公告日期', '报告期', '基本每股收益', '稀释每股收益', '每股营业总收入', '每股营业收入', '每股资本公积', '每股盈余公积', '每股未分配利润', '非经常性损益', '扣除非经常性损益后的净利润(扣非净利润)', '毛利', '流动比率', '速动比率', '保守速动比率', '存货周转天数', '应收账款周转天数', '存货周转率', '应收账款周转率', '流动资产周转率', '固定资产周转率', '总资产周转率', '经营活动净收益', '价值变动净收益', '利息费用', '折旧与摊销', '息税前利润', '息税折旧摊销前利润', '企业自由现金流量', '股权自由现金流量', '无息流动负债', '无息非流动负债', '带息债务', '净债务', '有形资产', '营运资金', '营运流动资本', '全部投入资本', '留存收益', '期末摊薄每股收益', '每股净资产', '每股经营活动产生的现金流量净额', '每股留存收益', '每股现金流量净额', '每股息税前利润', '每股企业自由现金流量', '每股股东自由现金流量', '销售净利率', '销售毛利率', '销售成本率', '销售期间费用率', '净利润/营业总收入', '销售费用/营业总收入', '管理费用/营业总收入', '财务费用/营业总收入', '资产减值损失/营业总收入', '营业总成本/营业总收入', '营业利润/营业总收入', '息税前利润/营业总收入', '净资产收益率', '加权平均净资产收益率', '净资产收益率(扣除非经常损益)', '总资产报酬率', '总资产净利润', '投入资本回报率', '年化净资产收益率', '年化总资产报酬率', '平均净资产收益率(增发条件)', '经营活动净收益/利润总额', '价值变动净收益/利润总额', '营业外收支净额/利润总额', '所得税/利润总额', '扣除非经常损益后的净利润/净利润', '销售商品提供劳务收到的现金/营业收入', '经营活动产生的现金流量净额/营业收入', '经营活动产生的现金流量净额/经营活动净收益', '资本支出/折旧和摊销', '资产负债率', '权益乘数', '权益乘数(杜邦分析)', '流动资产/总资产', '非流动资产/总资产', '有形资产/总资产', '带息债务/全部投入资本', '归属于母公司的股东权益/全部投入资本', '流动负债/负债合计', '非流动负债/负债合计', '经营活动产生的现金流量净额/流动负债', '产权比率', '归属于母公司的股东权益/负债合计', '归属于母公司的股东权益/带息债务', '有形资产/负债合计', '有形资产/带息债务', '有形资产/净债务', '经营活动产生的现金流量净额/负债合计', '经营活动产生的现金流量净额/带息债务', '经营活动产生的现金流量净额/净债务', '已获利息倍数(EBIT/利息费用)', '长期债务与营运资金比率', '息税折旧摊销前利润/负债合计', '营业周期', '年化总资产净利率', '总资产净利率(杜邦分析)', '固定资产合计', '扣除财务费用前营业利润', '非营业利润', '营业利润/利润总额', '非营业利润/利润总额', '经营活动产生的现金流量净额/营业利润', '货币资金/流动负债', '货币资金/带息流动负债', '营业利润/流动负债', '营业利润/负债合计', '年化投入资本回报率', '固定资产合计周转率', '利润总额/营业收入', '经营活动单季度净收益', '价值变动单季度净收益', '扣除非经常损益后的单季度净利润', '每股收益(单季度)', '销售净利率(单季度)', '销售毛利率(单季度)', '销售期间费用率(单季度)', '净利润/营业总收入(单季度)', '销售费用/营业总收入 (单季度)', '管理费用/营业总收入 (单季度)', '财务费用/营业总收入 (单季度)', '资产减值损失/营业总收入(单季度)', '营业总成本/营业总收入 (单季度)', '营业利润/营业总收入(单季度)', '净资产收益率(单季度)', '净资产单季度收益率(扣除非经常损益)', '总资产净利润(单季度)', '经营活动净收益/利润总额(单季度)', '价值变动净收益/利润总额(单季度)', '扣除非经常损益后的净利润/净利润(单季度)', '销售商品提供劳务收到的现金/营业收入(单季度)', '经营活动产生的现金流量净额/营业收入(单季度)', '经营活动产生的现金流量净额/经营活动净收益(单季度)', '基本每股收益同比增长率(%)', '稀释每股收益同比增长率(%)', '每股经营活动产生的现金流量净额同比增长率(%)', '营业利润同比增长率(%)', '利润总额同比增长率(%)', '归属母公司股东的净利润同比增长率(%)', '归属母公司股东的净利润-扣除非经常损益同比增长率(%)', '经营活动产生的现金流量净额同比增长率(%)', '净资产收益率(摊薄)同比增长率(%)', '每股净资产相对年初增长率(%)', '资产总计相对年初增长率(%)', '归属母公司的股东权益相对年初增长率(%)', '营业总收入同比增长率(%)', '营业收入同比增长率(%)', '营业总收入同比增长率(%)(单季度)', '营业总收入环比增长率(%)(单季度)', '营业收入同比增长率(%)(单季度)', '营业收入环比增长率(%)(单季度)', '营业利润同比增长率(%)(单季度)', '营业利润环比增长率(%)(单季度)', '净利润同比增长率(%)(单季度)', '净利润环比增长率(%)(单季度)', '归属母公司股东的净利润同比增长率(%)(单季度)', '归属母公司股东的净利润环比增长率(%)(单季度)', '净资产同比增长率', '研发费用', '更新标识']\n"
     ]
    }
   ],
   "source": [
    "print(list(cwzbsj.columns))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03424e83",
   "metadata": {},
   "source": [
    "# 股票数据产品主要功能开发\n",
    "\n",
    "* 传统的财报数据分析文档\n",
    "\n",
    "* 分析思路\n",
    "\n",
    "1. 单股分析，多股对比分析\n",
    "\n",
    "2. 财务数据分析与行情数据分析\n",
    "\n",
    "3. 股票估值分析\n",
    "\n",
    "4. 财务指标的维度：安全性，盈利能力，成长行，管理能力\n",
    "\n",
    "5. 风险风险\n",
    "\n",
    "* streamlit"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0176a294",
   "metadata": {},
   "source": [
    "## 单股分析\n",
    "\n",
    "\n",
    "### 完成单个股票关键财务字段的展示\n",
    "\n",
    "* @st.cache_data streamlit装饰器的作用\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7a49b744",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>股票代码</th>\n",
       "      <th>公告日期</th>\n",
       "      <th>基本每股收益</th>\n",
       "      <th>稀释每股收益</th>\n",
       "      <th>每股营业总收入</th>\n",
       "      <th>每股营业收入</th>\n",
       "      <th>每股资本公积</th>\n",
       "      <th>每股盈余公积</th>\n",
       "      <th>每股未分配利润</th>\n",
       "      <th>...</th>\n",
       "      <th>营业收入环比增长率(%)(单季度)</th>\n",
       "      <th>营业利润同比增长率(%)(单季度)</th>\n",
       "      <th>营业利润环比增长率(%)(单季度)</th>\n",
       "      <th>净利润同比增长率(%)(单季度)</th>\n",
       "      <th>净利润环比增长率(%)(单季度)</th>\n",
       "      <th>归属母公司股东的净利润同比增长率(%)(单季度)</th>\n",
       "      <th>归属母公司股东的净利润环比增长率(%)(单季度)</th>\n",
       "      <th>净资产同比增长率</th>\n",
       "      <th>研发费用</th>\n",
       "      <th>更新标识</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>报告期</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>20180331</th>\n",
       "      <td>85</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>20180420</td>\n",
       "      <td>0.33</td>\n",
       "      <td>0.33</td>\n",
       "      <td>1.6323</td>\n",
       "      <td>1.6323</td>\n",
       "      <td>3.2886</td>\n",
       "      <td>0.6279</td>\n",
       "      <td>4.6852</td>\n",
       "      <td>...</td>\n",
       "      <td>7.9875</td>\n",
       "      <td>4.1495</td>\n",
       "      <td>64.3500</td>\n",
       "      <td>6.1313</td>\n",
       "      <td>63.4044</td>\n",
       "      <td>6.1313</td>\n",
       "      <td>63.4044</td>\n",
       "      <td>7.5345</td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20180630</th>\n",
       "      <td>86</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>20180816</td>\n",
       "      <td>0.73</td>\n",
       "      <td>0.73</td>\n",
       "      <td>3.3338</td>\n",
       "      <td>3.3338</td>\n",
       "      <td>3.2886</td>\n",
       "      <td>0.6279</td>\n",
       "      <td>4.9440</td>\n",
       "      <td>...</td>\n",
       "      <td>4.2425</td>\n",
       "      <td>7.2488</td>\n",
       "      <td>2.7260</td>\n",
       "      <td>6.8927</td>\n",
       "      <td>2.7597</td>\n",
       "      <td>6.8927</td>\n",
       "      <td>2.7597</td>\n",
       "      <td>7.8916</td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20180930</th>\n",
       "      <td>87</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>20181024</td>\n",
       "      <td>1.14</td>\n",
       "      <td>1.14</td>\n",
       "      <td>5.0474</td>\n",
       "      <td>5.0474</td>\n",
       "      <td>3.2886</td>\n",
       "      <td>0.6279</td>\n",
       "      <td>5.3566</td>\n",
       "      <td>...</td>\n",
       "      <td>0.7120</td>\n",
       "      <td>7.9320</td>\n",
       "      <td>4.4681</td>\n",
       "      <td>7.3496</td>\n",
       "      <td>4.5300</td>\n",
       "      <td>7.3496</td>\n",
       "      <td>4.5300</td>\n",
       "      <td>7.8492</td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20181231</th>\n",
       "      <td>88</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>20190307</td>\n",
       "      <td>1.39</td>\n",
       "      <td>1.39</td>\n",
       "      <td>6.7977</td>\n",
       "      <td>6.7977</td>\n",
       "      <td>3.2886</td>\n",
       "      <td>0.6279</td>\n",
       "      <td>5.5351</td>\n",
       "      <td>...</td>\n",
       "      <td>2.1378</td>\n",
       "      <td>8.9395</td>\n",
       "      <td>-38.2219</td>\n",
       "      <td>8.0773</td>\n",
       "      <td>-38.4246</td>\n",
       "      <td>8.0773</td>\n",
       "      <td>-38.4246</td>\n",
       "      <td>8.1007</td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20190331</th>\n",
       "      <td>89</td>\n",
       "      <td>000001.SZ</td>\n",
       "      <td>20190424</td>\n",
       "      <td>0.38</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.8914</td>\n",
       "      <td>1.8914</td>\n",
       "      <td>3.2886</td>\n",
       "      <td>0.6279</td>\n",
       "      <td>5.9178</td>\n",
       "      <td>...</td>\n",
       "      <td>8.0660</td>\n",
       "      <td>12.6165</td>\n",
       "      <td>69.8647</td>\n",
       "      <td>12.9037</td>\n",
       "      <td>70.7015</td>\n",
       "      <td>12.9037</td>\n",
       "      <td>70.7015</td>\n",
       "      <td>12.3313</td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20210930</th>\n",
       "      <td>1</td>\n",
       "      <td>873527.BJ</td>\n",
       "      <td>20221028</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>8.4368</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20.8129</td>\n",
       "      <td>NaN</td>\n",
       "      <td>18.3438</td>\n",
       "      <td>NaN</td>\n",
       "      <td>18.3438</td>\n",
       "      <td>NaN</td>\n",
       "      <td>None</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20211231</th>\n",
       "      <td>2</td>\n",
       "      <td>873527.BJ</td>\n",
       "      <td>20220929</td>\n",
       "      <td>0.71</td>\n",
       "      <td>0.71</td>\n",
       "      <td>8.6172</td>\n",
       "      <td>8.6172</td>\n",
       "      <td>1.3959</td>\n",
       "      <td>0.3103</td>\n",
       "      <td>1.9818</td>\n",
       "      <td>...</td>\n",
       "      <td>16.8780</td>\n",
       "      <td>NaN</td>\n",
       "      <td>90.8780</td>\n",
       "      <td>NaN</td>\n",
       "      <td>86.4179</td>\n",
       "      <td>NaN</td>\n",
       "      <td>86.4179</td>\n",
       "      <td>12.5044</td>\n",
       "      <td>13731119.82</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220331</th>\n",
       "      <td>3</td>\n",
       "      <td>873527.BJ</td>\n",
       "      <td>20220609</td>\n",
       "      <td>0.09</td>\n",
       "      <td>0.09</td>\n",
       "      <td>1.6523</td>\n",
       "      <td>1.6523</td>\n",
       "      <td>1.3959</td>\n",
       "      <td>0.3103</td>\n",
       "      <td>2.0720</td>\n",
       "      <td>...</td>\n",
       "      <td>-39.2054</td>\n",
       "      <td>21.8618</td>\n",
       "      <td>-72.9238</td>\n",
       "      <td>22.7886</td>\n",
       "      <td>-71.6256</td>\n",
       "      <td>22.7886</td>\n",
       "      <td>-71.6256</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2749094.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220630</th>\n",
       "      <td>4</td>\n",
       "      <td>873527.BJ</td>\n",
       "      <td>20220810</td>\n",
       "      <td>0.30</td>\n",
       "      <td>0.30</td>\n",
       "      <td>3.8368</td>\n",
       "      <td>3.8368</td>\n",
       "      <td>1.3959</td>\n",
       "      <td>0.3103</td>\n",
       "      <td>2.2820</td>\n",
       "      <td>...</td>\n",
       "      <td>32.2054</td>\n",
       "      <td>47.9156</td>\n",
       "      <td>136.8954</td>\n",
       "      <td>45.6926</td>\n",
       "      <td>132.7434</td>\n",
       "      <td>45.6926</td>\n",
       "      <td>132.7434</td>\n",
       "      <td>18.7846</td>\n",
       "      <td>6704634.78</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20220930</th>\n",
       "      <td>5</td>\n",
       "      <td>873527.BJ</td>\n",
       "      <td>20221028</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.55</td>\n",
       "      <td>5.9952</td>\n",
       "      <td>5.9952</td>\n",
       "      <td>1.3959</td>\n",
       "      <td>0.3103</td>\n",
       "      <td>2.5333</td>\n",
       "      <td>...</td>\n",
       "      <td>-1.1952</td>\n",
       "      <td>41.4069</td>\n",
       "      <td>15.4968</td>\n",
       "      <td>47.3396</td>\n",
       "      <td>19.6817</td>\n",
       "      <td>47.3396</td>\n",
       "      <td>19.6817</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11099801.73</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>89170 rows × 167 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          index       股票代码      公告日期  基本每股收益  稀释每股收益  每股营业总收入  每股营业收入  每股资本公积  \\\n",
       "报告期                                                                             \n",
       "20180331     85  000001.SZ  20180420    0.33    0.33   1.6323  1.6323  3.2886   \n",
       "20180630     86  000001.SZ  20180816    0.73    0.73   3.3338  3.3338  3.2886   \n",
       "20180930     87  000001.SZ  20181024    1.14    1.14   5.0474  5.0474  3.2886   \n",
       "20181231     88  000001.SZ  20190307    1.39    1.39   6.7977  6.7977  3.2886   \n",
       "20190331     89  000001.SZ  20190424    0.38    0.36   1.8914  1.8914  3.2886   \n",
       "...         ...        ...       ...     ...     ...      ...     ...     ...   \n",
       "20210930      1  873527.BJ  20221028     NaN     NaN      NaN     NaN     NaN   \n",
       "20211231      2  873527.BJ  20220929    0.71    0.71   8.6172  8.6172  1.3959   \n",
       "20220331      3  873527.BJ  20220609    0.09    0.09   1.6523  1.6523  1.3959   \n",
       "20220630      4  873527.BJ  20220810    0.30    0.30   3.8368  3.8368  1.3959   \n",
       "20220930      5  873527.BJ  20221028    0.55    0.55   5.9952  5.9952  1.3959   \n",
       "\n",
       "          每股盈余公积  每股未分配利润  ... 营业收入环比增长率(%)(单季度) 营业利润同比增长率(%)(单季度)  \\\n",
       "报告期                        ...                                       \n",
       "20180331  0.6279   4.6852  ...            7.9875            4.1495   \n",
       "20180630  0.6279   4.9440  ...            4.2425            7.2488   \n",
       "20180930  0.6279   5.3566  ...            0.7120            7.9320   \n",
       "20181231  0.6279   5.5351  ...            2.1378            8.9395   \n",
       "20190331  0.6279   5.9178  ...            8.0660           12.6165   \n",
       "...          ...      ...  ...               ...               ...   \n",
       "20210930     NaN      NaN  ...            8.4368               NaN   \n",
       "20211231  0.3103   1.9818  ...           16.8780               NaN   \n",
       "20220331  0.3103   2.0720  ...          -39.2054           21.8618   \n",
       "20220630  0.3103   2.2820  ...           32.2054           47.9156   \n",
       "20220930  0.3103   2.5333  ...           -1.1952           41.4069   \n",
       "\n",
       "         营业利润环比增长率(%)(单季度)  净利润同比增长率(%)(单季度)  净利润环比增长率(%)(单季度)  \\\n",
       "报告期                                                              \n",
       "20180331           64.3500            6.1313           63.4044   \n",
       "20180630            2.7260            6.8927            2.7597   \n",
       "20180930            4.4681            7.3496            4.5300   \n",
       "20181231          -38.2219            8.0773          -38.4246   \n",
       "20190331           69.8647           12.9037           70.7015   \n",
       "...                    ...               ...               ...   \n",
       "20210930           20.8129               NaN           18.3438   \n",
       "20211231           90.8780               NaN           86.4179   \n",
       "20220331          -72.9238           22.7886          -71.6256   \n",
       "20220630          136.8954           45.6926          132.7434   \n",
       "20220930           15.4968           47.3396           19.6817   \n",
       "\n",
       "          归属母公司股东的净利润同比增长率(%)(单季度)  归属母公司股东的净利润环比增长率(%)(单季度)  净资产同比增长率  \\\n",
       "报告期                                                                      \n",
       "20180331                    6.1313                   63.4044    7.5345   \n",
       "20180630                    6.8927                    2.7597    7.8916   \n",
       "20180930                    7.3496                    4.5300    7.8492   \n",
       "20181231                    8.0773                  -38.4246    8.1007   \n",
       "20190331                   12.9037                   70.7015   12.3313   \n",
       "...                            ...                       ...       ...   \n",
       "20210930                       NaN                   18.3438       NaN   \n",
       "20211231                       NaN                   86.4179   12.5044   \n",
       "20220331                   22.7886                  -71.6256       NaN   \n",
       "20220630                   45.6926                  132.7434   18.7846   \n",
       "20220930                   47.3396                   19.6817       NaN   \n",
       "\n",
       "                 研发费用  更新标识  \n",
       "报告期                          \n",
       "20180331         None     1  \n",
       "20180630         None     1  \n",
       "20180930         None     1  \n",
       "20181231         None     1  \n",
       "20190331         None     1  \n",
       "...               ...   ...  \n",
       "20210930         None     0  \n",
       "20211231  13731119.82     1  \n",
       "20220331    2749094.0     1  \n",
       "20220630   6704634.78     1  \n",
       "20220930  11099801.73     1  \n",
       "\n",
       "[89170 rows x 167 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cwzbsj"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "7a6768f2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>扣除非经常性损益后的净利润(扣非净利润)</th>\n",
       "      <th>净资产收益率(扣除非经常损益)</th>\n",
       "      <th>销售毛利率</th>\n",
       "      <th>销售净利率</th>\n",
       "      <th>企业自由现金流量</th>\n",
       "      <th>非经常性损益</th>\n",
       "      <th>净债务</th>\n",
       "      <th>每股净资产</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>报告期</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-03-31</th>\n",
       "      <td>4186013203.83</td>\n",
       "      <td>6.1326</td>\n",
       "      <td>30.8578</td>\n",
       "      <td>14.1718</td>\n",
       "      <td>6.714461e+09</td>\n",
       "      <td>1395611192.8</td>\n",
       "      <td>-83447897105.82</td>\n",
       "      <td>11.7892</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-06-30</th>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "      <td>173910407.56</td>\n",
       "      <td>-81474385853.23</td>\n",
       "      <td>13.0198</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-09-30</th>\n",
       "      <td>21345703240.01</td>\n",
       "      <td>28.0347</td>\n",
       "      <td>30.1534</td>\n",
       "      <td>14.2846</td>\n",
       "      <td>1.677785e+09</td>\n",
       "      <td>-227267487.99</td>\n",
       "      <td>-78138676694.04</td>\n",
       "      <td>14.4098</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-31</th>\n",
       "      <td>25580865501.38</td>\n",
       "      <td>32.6033</td>\n",
       "      <td>30.2282</td>\n",
       "      <td>13.3145</td>\n",
       "      <td>1.660761e+10</td>\n",
       "      <td>621922180.04</td>\n",
       "      <td>-90695400586.28</td>\n",
       "      <td>15.1814</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-03-31</th>\n",
       "      <td>5113678278.15</td>\n",
       "      <td>5.5338</td>\n",
       "      <td>30.5896</td>\n",
       "      <td>14.0518</td>\n",
       "      <td>6.083189e+09</td>\n",
       "      <td>558190762.94</td>\n",
       "      <td>-92446387419.83</td>\n",
       "      <td>15.5409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-06-30</th>\n",
       "      <td>13393426690.0</td>\n",
       "      <td>14.5764</td>\n",
       "      <td>31.0230</td>\n",
       "      <td>14.1995</td>\n",
       "      <td>2.536284e+10</td>\n",
       "      <td>356767398.89</td>\n",
       "      <td>-100059497602.02</td>\n",
       "      <td>15.3667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-09-30</th>\n",
       "      <td>21565496233.75</td>\n",
       "      <td>22.4501</td>\n",
       "      <td>30.1627</td>\n",
       "      <td>14.3304</td>\n",
       "      <td>3.571139e+10</td>\n",
       "      <td>552000133.27</td>\n",
       "      <td>-112832228293.35</td>\n",
       "      <td>16.7548</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-12-31</th>\n",
       "      <td>24171511911.32</td>\n",
       "      <td>23.9939</td>\n",
       "      <td>27.5815</td>\n",
       "      <td>12.5293</td>\n",
       "      <td>3.879401e+10</td>\n",
       "      <td>525129457.52</td>\n",
       "      <td>-105982193943.38</td>\n",
       "      <td>18.3109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-03-31</th>\n",
       "      <td>1429583505.27</td>\n",
       "      <td>1.2816</td>\n",
       "      <td>17.4892</td>\n",
       "      <td>7.7363</td>\n",
       "      <td>-7.132382e+09</td>\n",
       "      <td>128430033.74</td>\n",
       "      <td>-98881396650.03</td>\n",
       "      <td>18.7747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-06-30</th>\n",
       "      <td>5996537619.91</td>\n",
       "      <td>5.3596</td>\n",
       "      <td>21.1142</td>\n",
       "      <td>9.2447</td>\n",
       "      <td>5.204689e+09</td>\n",
       "      <td>365599757.73</td>\n",
       "      <td>-102773348639.91</td>\n",
       "      <td>18.8859</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-09-30</th>\n",
       "      <td>12582102933.17</td>\n",
       "      <td>11.1888</td>\n",
       "      <td>23.3651</td>\n",
       "      <td>10.9555</td>\n",
       "      <td>6.532213e+09</td>\n",
       "      <td>1116619109.98</td>\n",
       "      <td>-109925506232.16</td>\n",
       "      <td>19.0753</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-31</th>\n",
       "      <td>20285816036.0</td>\n",
       "      <td>18.0043</td>\n",
       "      <td>26.1417</td>\n",
       "      <td>13.2457</td>\n",
       "      <td>1.410098e+10</td>\n",
       "      <td>1889292101.32</td>\n",
       "      <td>-113211984507.52</td>\n",
       "      <td>19.1482</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-03-31</th>\n",
       "      <td>3299482181.81</td>\n",
       "      <td>2.8928</td>\n",
       "      <td>24.4259</td>\n",
       "      <td>10.4026</td>\n",
       "      <td>3.781633e+09</td>\n",
       "      <td>143417573.28</td>\n",
       "      <td>-111628328051.9</td>\n",
       "      <td>18.7724</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-06-30</th>\n",
       "      <td>8791754578.14</td>\n",
       "      <td>8.2358</td>\n",
       "      <td>23.7373</td>\n",
       "      <td>10.4235</td>\n",
       "      <td>3.469678e+10</td>\n",
       "      <td>665064774.72</td>\n",
       "      <td>-93953703208.4</td>\n",
       "      <td>16.3424</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-09-30</th>\n",
       "      <td>14762284676.64</td>\n",
       "      <td>14.2302</td>\n",
       "      <td>24.1321</td>\n",
       "      <td>11.3580</td>\n",
       "      <td>1.589396e+10</td>\n",
       "      <td>882491840.21</td>\n",
       "      <td>-89122024595.84</td>\n",
       "      <td>15.3411</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-12-31</th>\n",
       "      <td>21850050895.31</td>\n",
       "      <td>19.9688</td>\n",
       "      <td>24.2814</td>\n",
       "      <td>12.1531</td>\n",
       "      <td>1.682357e+10</td>\n",
       "      <td>1213681477.31</td>\n",
       "      <td>-73823798087.54</td>\n",
       "      <td>17.5251</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-03-31</th>\n",
       "      <td>3774746923.56</td>\n",
       "      <td>3.7562</td>\n",
       "      <td>23.6550</td>\n",
       "      <td>10.1633</td>\n",
       "      <td>1.964196e+09</td>\n",
       "      <td>228569037.74</td>\n",
       "      <td>-74633708714.47</td>\n",
       "      <td>16.4572</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-06-30</th>\n",
       "      <td>11607422014.22</td>\n",
       "      <td>11.6669</td>\n",
       "      <td>24.4950</td>\n",
       "      <td>11.3700</td>\n",
       "      <td>1.117988e+10</td>\n",
       "      <td>-140942381.6</td>\n",
       "      <td>-63968225110.91</td>\n",
       "      <td>16.1178</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-30</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "      <td>-262743298.1</td>\n",
       "      <td>-67520903930.62</td>\n",
       "      <td>16.9963</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           扣除非经常性损益后的净利润(扣非净利润)  净资产收益率(扣除非经常损益)    销售毛利率    销售净利率  \\\n",
       "报告期                                                                  \n",
       "2018-03-31        4186013203.83           6.1326  30.8578  14.1718   \n",
       "2018-06-30       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-09-30       21345703240.01          28.0347  30.1534  14.2846   \n",
       "2018-12-31       25580865501.38          32.6033  30.2282  13.3145   \n",
       "2019-03-31        5113678278.15           5.5338  30.5896  14.0518   \n",
       "2019-06-30        13393426690.0          14.5764  31.0230  14.1995   \n",
       "2019-09-30       21565496233.75          22.4501  30.1627  14.3304   \n",
       "2019-12-31       24171511911.32          23.9939  27.5815  12.5293   \n",
       "2020-03-31        1429583505.27           1.2816  17.4892   7.7363   \n",
       "2020-06-30        5996537619.91           5.3596  21.1142   9.2447   \n",
       "2020-09-30       12582102933.17          11.1888  23.3651  10.9555   \n",
       "2020-12-31        20285816036.0          18.0043  26.1417  13.2457   \n",
       "2021-03-31        3299482181.81           2.8928  24.4259  10.4026   \n",
       "2021-06-30        8791754578.14           8.2358  23.7373  10.4235   \n",
       "2021-09-30       14762284676.64          14.2302  24.1321  11.3580   \n",
       "2021-12-31       21850050895.31          19.9688  24.2814  12.1531   \n",
       "2022-03-31        3774746923.56           3.7562  23.6550  10.1633   \n",
       "2022-06-30       11607422014.22          11.6669  24.4950  11.3700   \n",
       "2022-09-30       18566867450.84          18.6260  25.5401  11.8268   \n",
       "\n",
       "                企业自由现金流量         非经常性损益               净债务    每股净资产  \n",
       "报告期                                                                 \n",
       "2018-03-31  6.714461e+09   1395611192.8   -83447897105.82  11.7892  \n",
       "2018-06-30  5.249164e+09   173910407.56   -81474385853.23  13.0198  \n",
       "2018-09-30  1.677785e+09  -227267487.99   -78138676694.04  14.4098  \n",
       "2018-12-31  1.660761e+10   621922180.04   -90695400586.28  15.1814  \n",
       "2019-03-31  6.083189e+09   558190762.94   -92446387419.83  15.5409  \n",
       "2019-06-30  2.536284e+10   356767398.89  -100059497602.02  15.3667  \n",
       "2019-09-30  3.571139e+10   552000133.27  -112832228293.35  16.7548  \n",
       "2019-12-31  3.879401e+10   525129457.52  -105982193943.38  18.3109  \n",
       "2020-03-31 -7.132382e+09   128430033.74   -98881396650.03  18.7747  \n",
       "2020-06-30  5.204689e+09   365599757.73  -102773348639.91  18.8859  \n",
       "2020-09-30  6.532213e+09  1116619109.98  -109925506232.16  19.0753  \n",
       "2020-12-31  1.410098e+10  1889292101.32  -113211984507.52  19.1482  \n",
       "2021-03-31  3.781633e+09   143417573.28   -111628328051.9  18.7724  \n",
       "2021-06-30  3.469678e+10   665064774.72    -93953703208.4  16.3424  \n",
       "2021-09-30  1.589396e+10   882491840.21   -89122024595.84  15.3411  \n",
       "2021-12-31  1.682357e+10  1213681477.31   -73823798087.54  17.5251  \n",
       "2022-03-31  1.964196e+09   228569037.74   -74633708714.47  16.4572  \n",
       "2022-06-30  1.117988e+10   -140942381.6   -63968225110.91  16.1178  \n",
       "2022-09-30  1.008118e+10   -262743298.1   -67520903930.62  16.9963  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cwzbsj[cwzbsj[\"股票代码\"]==\"000651.SZ\"][['扣除非经常性损益后的净利润(扣非净利润)','净资产收益率(扣除非经常损益)','销售毛利率','销售净利率', '企业自由现金流量', '非经常性损益','净债务','每股净资产']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2dcfea9d",
   "metadata": {},
   "outputs": [],
   "source": [
    "cwzbsj[\"报告期\"]=cwzbsj[\"报告期\"].astype(\"str\").astype(\"datetime64\")\n",
    "cwzbsj.set_index(\"报告期\",inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "a0ea7d79",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "报告期\n",
       "2018-03-31             NaN\n",
       "2018-06-30    3.165969e+10\n",
       "2018-09-30             NaN\n",
       "2018-12-31    1.329879e+11\n",
       "2019-03-31             NaN\n",
       "                  ...     \n",
       "2021-09-30             NaN\n",
       "2021-12-31    4.148790e+07\n",
       "2022-03-31   -5.409728e+07\n",
       "2022-06-30   -3.822863e+07\n",
       "2022-09-30   -8.789537e+07\n",
       "Name: 企业自由现金流量, Length: 89170, dtype: float64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cwzbsj[\"企业自由现金流量\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5e770b6f",
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_daily=pd.read_sql(\"select * from stock_daily where 股票代码<'003000.SZ'\",con=conn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "4d489f8d",
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_daily[\"交易日期\"]=stock_daily[\"交易日期\"].astype(\"str\").astype(\"datetime64\")\n",
    "stock_daily.set_index(\"交易日期\",inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "96dade27",
   "metadata": {},
   "outputs": [],
   "source": [
    "cwzbsj[\"报告期\"]=cwzbsj[\"报告期\"].astype(\"str\").astype(\"datetime64\")\n",
    "cwzbsj.set_index(\"报告期\",inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "d6409c42",
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_cw=cwzbsj[cwzbsj[\"股票代码\"]==\"000651.SZ\"][['扣除非经常性损益后的净利润(扣非净利润)','净资产收益率(扣除非经常损益)','销售毛利率','销售净利率','企业自由现金流量']]\n",
    "stock_price_gl=stock_daily[stock_daily[\"股票代码\"]==\"000651.SZ\"][['收盘价', '成交量(手)','量比', '市盈率(静态)', '市盈率(TTM)', '市盈率(动态)', '市净率','市销率', '市销率(TTM)', '股息率(%)', '股息率(TTM)(%)','总市值(万元)', '流通市值(万元)']]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a1915942",
   "metadata": {},
   "source": [
    "* 相关streamlit代码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7f314b98",
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_id = st.sidebar.text_input('stock_id', '000651.SZ')\n",
    "\n",
    "choice1 = st.sidebar.selectbox('选择一个字段', menu1)\n",
    "\n",
    "st.sidebar.multiselect"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a5269eb",
   "metadata": {},
   "source": [
    "### 完成单股财务数据与行情数据的可视化展示\n",
    "\n",
    "* echarts 的时间数据转换方法：[d.strftime(\"%Y-%m-%d\")for d in data_cw.index.tolist()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "08b44b81",
   "metadata": {},
   "outputs": [],
   "source": [
    "#[d.strftime(\"%Y-%m-%d\")for d in cwzbsj.index.tolist()]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c60c0a46",
   "metadata": {},
   "source": [
    "### 完成财务数据与行情数据的对比可视化展示\n",
    "\n",
    "* 重采样与bfill()\n",
    "* pd.concat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "2ddd4761",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>收盘价</th>\n",
       "      <th>成交量(手)</th>\n",
       "      <th>量比</th>\n",
       "      <th>市盈率(静态)</th>\n",
       "      <th>市盈率(TTM)</th>\n",
       "      <th>市盈率(动态)</th>\n",
       "      <th>市净率</th>\n",
       "      <th>市销率</th>\n",
       "      <th>市销率(TTM)</th>\n",
       "      <th>股息率(%)</th>\n",
       "      <th>股息率(TTM)(%)</th>\n",
       "      <th>总市值(万元)</th>\n",
       "      <th>流通市值(万元)</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>交易日期</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-01-02</th>\n",
       "      <td>6750.5571</td>\n",
       "      <td>587146.42</td>\n",
       "      <td>1.33</td>\n",
       "      <td>17.6131</td>\n",
       "      <td>13.8206</td>\n",
       "      <td>13.18</td>\n",
       "      <td>4.6331</td>\n",
       "      <td>2.5079</td>\n",
       "      <td>1.9862</td>\n",
       "      <td>3.9867</td>\n",
       "      <td>3.9867</td>\n",
       "      <td>2.716102e+07</td>\n",
       "      <td>2.695677e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-01-03</th>\n",
       "      <td>6825.3141</td>\n",
       "      <td>794304.89</td>\n",
       "      <td>1.73</td>\n",
       "      <td>17.8081</td>\n",
       "      <td>13.9736</td>\n",
       "      <td>13.32</td>\n",
       "      <td>4.6844</td>\n",
       "      <td>2.5357</td>\n",
       "      <td>2.0082</td>\n",
       "      <td>3.9430</td>\n",
       "      <td>3.9430</td>\n",
       "      <td>2.746181e+07</td>\n",
       "      <td>2.725530e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-01-04</th>\n",
       "      <td>6964.3621</td>\n",
       "      <td>640485.24</td>\n",
       "      <td>1.18</td>\n",
       "      <td>18.1709</td>\n",
       "      <td>14.2583</td>\n",
       "      <td>13.59</td>\n",
       "      <td>4.7798</td>\n",
       "      <td>2.5873</td>\n",
       "      <td>2.0491</td>\n",
       "      <td>3.8643</td>\n",
       "      <td>3.8643</td>\n",
       "      <td>2.802127e+07</td>\n",
       "      <td>2.781055e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-01-05</th>\n",
       "      <td>7158.7303</td>\n",
       "      <td>781865.80</td>\n",
       "      <td>1.39</td>\n",
       "      <td>18.6780</td>\n",
       "      <td>14.6562</td>\n",
       "      <td>13.97</td>\n",
       "      <td>4.9132</td>\n",
       "      <td>2.6595</td>\n",
       "      <td>2.1063</td>\n",
       "      <td>3.7594</td>\n",
       "      <td>3.7594</td>\n",
       "      <td>2.880332e+07</td>\n",
       "      <td>2.858672e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-01-08</th>\n",
       "      <td>7151.2546</td>\n",
       "      <td>788630.47</td>\n",
       "      <td>1.24</td>\n",
       "      <td>18.6585</td>\n",
       "      <td>14.6409</td>\n",
       "      <td>13.96</td>\n",
       "      <td>4.9081</td>\n",
       "      <td>2.6567</td>\n",
       "      <td>2.1041</td>\n",
       "      <td>3.7633</td>\n",
       "      <td>3.7633</td>\n",
       "      <td>2.877324e+07</td>\n",
       "      <td>2.855686e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-02-13</th>\n",
       "      <td>6539.2425</td>\n",
       "      <td>286385.56</td>\n",
       "      <td>1.27</td>\n",
       "      <td>8.4750</td>\n",
       "      <td>7.5989</td>\n",
       "      <td>8.01</td>\n",
       "      <td>2.0422</td>\n",
       "      <td>1.0404</td>\n",
       "      <td>0.9911</td>\n",
       "      <td>8.4977</td>\n",
       "      <td>8.4977</td>\n",
       "      <td>1.954661e+07</td>\n",
       "      <td>1.939418e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-02-14</th>\n",
       "      <td>6569.3860</td>\n",
       "      <td>192681.97</td>\n",
       "      <td>0.90</td>\n",
       "      <td>8.5141</td>\n",
       "      <td>7.6339</td>\n",
       "      <td>8.05</td>\n",
       "      <td>2.0516</td>\n",
       "      <td>1.0452</td>\n",
       "      <td>0.9957</td>\n",
       "      <td>8.4587</td>\n",
       "      <td>8.4587</td>\n",
       "      <td>1.963671e+07</td>\n",
       "      <td>1.948358e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-02-15</th>\n",
       "      <td>6507.2151</td>\n",
       "      <td>167134.17</td>\n",
       "      <td>0.80</td>\n",
       "      <td>8.4335</td>\n",
       "      <td>7.5616</td>\n",
       "      <td>7.97</td>\n",
       "      <td>2.0322</td>\n",
       "      <td>1.0353</td>\n",
       "      <td>0.9862</td>\n",
       "      <td>8.5395</td>\n",
       "      <td>8.5395</td>\n",
       "      <td>1.945088e+07</td>\n",
       "      <td>1.929919e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-02-16</th>\n",
       "      <td>6433.7405</td>\n",
       "      <td>281351.21</td>\n",
       "      <td>1.40</td>\n",
       "      <td>8.3383</td>\n",
       "      <td>7.4763</td>\n",
       "      <td>7.88</td>\n",
       "      <td>2.0093</td>\n",
       "      <td>1.0237</td>\n",
       "      <td>0.9751</td>\n",
       "      <td>8.6370</td>\n",
       "      <td>8.6370</td>\n",
       "      <td>1.923125e+07</td>\n",
       "      <td>1.908128e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-02-17</th>\n",
       "      <td>6399.8291</td>\n",
       "      <td>181937.85</td>\n",
       "      <td>0.84</td>\n",
       "      <td>8.2944</td>\n",
       "      <td>7.4369</td>\n",
       "      <td>7.84</td>\n",
       "      <td>1.9987</td>\n",
       "      <td>1.0183</td>\n",
       "      <td>0.9700</td>\n",
       "      <td>8.6828</td>\n",
       "      <td>8.6828</td>\n",
       "      <td>1.912989e+07</td>\n",
       "      <td>1.898070e+07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1238 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  收盘价     成交量(手)    量比  市盈率(静态)  市盈率(TTM)  市盈率(动态)     市净率  \\\n",
       "交易日期                                                                         \n",
       "2018-01-02  6750.5571  587146.42  1.33  17.6131   13.8206    13.18  4.6331   \n",
       "2018-01-03  6825.3141  794304.89  1.73  17.8081   13.9736    13.32  4.6844   \n",
       "2018-01-04  6964.3621  640485.24  1.18  18.1709   14.2583    13.59  4.7798   \n",
       "2018-01-05  7158.7303  781865.80  1.39  18.6780   14.6562    13.97  4.9132   \n",
       "2018-01-08  7151.2546  788630.47  1.24  18.6585   14.6409    13.96  4.9081   \n",
       "...               ...        ...   ...      ...       ...      ...     ...   \n",
       "2023-02-13  6539.2425  286385.56  1.27   8.4750    7.5989     8.01  2.0422   \n",
       "2023-02-14  6569.3860  192681.97  0.90   8.5141    7.6339     8.05  2.0516   \n",
       "2023-02-15  6507.2151  167134.17  0.80   8.4335    7.5616     7.97  2.0322   \n",
       "2023-02-16  6433.7405  281351.21  1.40   8.3383    7.4763     7.88  2.0093   \n",
       "2023-02-17  6399.8291  181937.85  0.84   8.2944    7.4369     7.84  1.9987   \n",
       "\n",
       "               市销率  市销率(TTM)  股息率(%)  股息率(TTM)(%)       总市值(万元)      流通市值(万元)  \n",
       "交易日期                                                                           \n",
       "2018-01-02  2.5079    1.9862  3.9867       3.9867  2.716102e+07  2.695677e+07  \n",
       "2018-01-03  2.5357    2.0082  3.9430       3.9430  2.746181e+07  2.725530e+07  \n",
       "2018-01-04  2.5873    2.0491  3.8643       3.8643  2.802127e+07  2.781055e+07  \n",
       "2018-01-05  2.6595    2.1063  3.7594       3.7594  2.880332e+07  2.858672e+07  \n",
       "2018-01-08  2.6567    2.1041  3.7633       3.7633  2.877324e+07  2.855686e+07  \n",
       "...            ...       ...     ...          ...           ...           ...  \n",
       "2023-02-13  1.0404    0.9911  8.4977       8.4977  1.954661e+07  1.939418e+07  \n",
       "2023-02-14  1.0452    0.9957  8.4587       8.4587  1.963671e+07  1.948358e+07  \n",
       "2023-02-15  1.0353    0.9862  8.5395       8.5395  1.945088e+07  1.929919e+07  \n",
       "2023-02-16  1.0237    0.9751  8.6370       8.6370  1.923125e+07  1.908128e+07  \n",
       "2023-02-17  1.0183    0.9700  8.6828       8.6828  1.912989e+07  1.898070e+07  \n",
       "\n",
       "[1238 rows x 13 columns]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_price_gl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "a6b0aafe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>扣除非经常性损益后的净利润(扣非净利润)</th>\n",
       "      <th>净资产收益率(扣除非经常损益)</th>\n",
       "      <th>销售毛利率</th>\n",
       "      <th>销售净利率</th>\n",
       "      <th>企业自由现金流量</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>报告期</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-03-31</th>\n",
       "      <td>4186013203.83</td>\n",
       "      <td>6.1326</td>\n",
       "      <td>30.8578</td>\n",
       "      <td>14.1718</td>\n",
       "      <td>6.714461e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-01</th>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-02</th>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-03</th>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-04</th>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-26</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-27</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-28</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-29</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-30</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1645 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           扣除非经常性损益后的净利润(扣非净利润)  净资产收益率(扣除非经常损益)    销售毛利率    销售净利率  \\\n",
       "报告期                                                                  \n",
       "2018-03-31        4186013203.83           6.1326  30.8578  14.1718   \n",
       "2018-04-01       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-02       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-03       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-04       12632290055.79          17.5548  30.0265  14.1634   \n",
       "...                         ...              ...      ...      ...   \n",
       "2022-09-26       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-27       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-28       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-29       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-30       18566867450.84          18.6260  25.5401  11.8268   \n",
       "\n",
       "                企业自由现金流量  \n",
       "报告期                       \n",
       "2018-03-31  6.714461e+09  \n",
       "2018-04-01  5.249164e+09  \n",
       "2018-04-02  5.249164e+09  \n",
       "2018-04-03  5.249164e+09  \n",
       "2018-04-04  5.249164e+09  \n",
       "...                  ...  \n",
       "2022-09-26  1.008118e+10  \n",
       "2022-09-27  1.008118e+10  \n",
       "2022-09-28  1.008118e+10  \n",
       "2022-09-29  1.008118e+10  \n",
       "2022-09-30  1.008118e+10  \n",
       "\n",
       "[1645 rows x 5 columns]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_cw1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "c5060bbc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>收盘价</th>\n",
       "      <th>成交量(手)</th>\n",
       "      <th>量比</th>\n",
       "      <th>市盈率(静态)</th>\n",
       "      <th>市盈率(TTM)</th>\n",
       "      <th>市盈率(动态)</th>\n",
       "      <th>市净率</th>\n",
       "      <th>市销率</th>\n",
       "      <th>市销率(TTM)</th>\n",
       "      <th>股息率(%)</th>\n",
       "      <th>股息率(TTM)(%)</th>\n",
       "      <th>总市值(万元)</th>\n",
       "      <th>流通市值(万元)</th>\n",
       "      <th>扣除非经常性损益后的净利润(扣非净利润)</th>\n",
       "      <th>净资产收益率(扣除非经常损益)</th>\n",
       "      <th>销售毛利率</th>\n",
       "      <th>销售净利率</th>\n",
       "      <th>企业自由现金流量</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-04-02</th>\n",
       "      <td>6873.1586</td>\n",
       "      <td>508996.09</td>\n",
       "      <td>0.74</td>\n",
       "      <td>17.9329</td>\n",
       "      <td>14.0716</td>\n",
       "      <td>13.42</td>\n",
       "      <td>4.7172</td>\n",
       "      <td>2.5534</td>\n",
       "      <td>2.0223</td>\n",
       "      <td>3.9156</td>\n",
       "      <td>3.9156</td>\n",
       "      <td>2.765431e+07</td>\n",
       "      <td>2.744635e+07</td>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-03</th>\n",
       "      <td>6895.5857</td>\n",
       "      <td>372046.90</td>\n",
       "      <td>0.55</td>\n",
       "      <td>17.9914</td>\n",
       "      <td>14.1175</td>\n",
       "      <td>13.46</td>\n",
       "      <td>4.7326</td>\n",
       "      <td>2.5618</td>\n",
       "      <td>2.0289</td>\n",
       "      <td>3.9029</td>\n",
       "      <td>3.9029</td>\n",
       "      <td>2.774455e+07</td>\n",
       "      <td>2.753591e+07</td>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-04</th>\n",
       "      <td>6997.2552</td>\n",
       "      <td>491215.51</td>\n",
       "      <td>0.78</td>\n",
       "      <td>18.2567</td>\n",
       "      <td>14.3256</td>\n",
       "      <td>13.66</td>\n",
       "      <td>4.8024</td>\n",
       "      <td>2.5995</td>\n",
       "      <td>2.0588</td>\n",
       "      <td>3.8462</td>\n",
       "      <td>3.8462</td>\n",
       "      <td>2.815362e+07</td>\n",
       "      <td>2.794190e+07</td>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-09</th>\n",
       "      <td>6835.7801</td>\n",
       "      <td>505261.63</td>\n",
       "      <td>0.93</td>\n",
       "      <td>17.8354</td>\n",
       "      <td>13.9950</td>\n",
       "      <td>13.34</td>\n",
       "      <td>4.6916</td>\n",
       "      <td>2.5395</td>\n",
       "      <td>2.0113</td>\n",
       "      <td>3.9370</td>\n",
       "      <td>3.9370</td>\n",
       "      <td>2.750392e+07</td>\n",
       "      <td>2.729709e+07</td>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-10</th>\n",
       "      <td>7128.8275</td>\n",
       "      <td>582346.74</td>\n",
       "      <td>1.22</td>\n",
       "      <td>18.6000</td>\n",
       "      <td>14.5950</td>\n",
       "      <td>13.91</td>\n",
       "      <td>4.8927</td>\n",
       "      <td>2.6484</td>\n",
       "      <td>2.0975</td>\n",
       "      <td>3.7752</td>\n",
       "      <td>3.7752</td>\n",
       "      <td>2.868300e+07</td>\n",
       "      <td>2.846731e+07</td>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-26</th>\n",
       "      <td>6190.7090</td>\n",
       "      <td>298663.72</td>\n",
       "      <td>0.73</td>\n",
       "      <td>8.0233</td>\n",
       "      <td>7.3803</td>\n",
       "      <td>8.07</td>\n",
       "      <td>2.4896</td>\n",
       "      <td>0.9850</td>\n",
       "      <td>0.9636</td>\n",
       "      <td>9.0531</td>\n",
       "      <td>8.9761</td>\n",
       "      <td>1.850480e+07</td>\n",
       "      <td>1.836049e+07</td>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-27</th>\n",
       "      <td>6301.8629</td>\n",
       "      <td>383659.70</td>\n",
       "      <td>1.00</td>\n",
       "      <td>8.1674</td>\n",
       "      <td>7.5128</td>\n",
       "      <td>8.21</td>\n",
       "      <td>2.5343</td>\n",
       "      <td>1.0027</td>\n",
       "      <td>0.9809</td>\n",
       "      <td>8.8934</td>\n",
       "      <td>8.8177</td>\n",
       "      <td>1.883705e+07</td>\n",
       "      <td>1.869015e+07</td>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-28</th>\n",
       "      <td>6217.0845</td>\n",
       "      <td>257902.22</td>\n",
       "      <td>0.69</td>\n",
       "      <td>8.0575</td>\n",
       "      <td>7.4117</td>\n",
       "      <td>8.10</td>\n",
       "      <td>2.5002</td>\n",
       "      <td>0.9892</td>\n",
       "      <td>0.9677</td>\n",
       "      <td>9.0147</td>\n",
       "      <td>8.9380</td>\n",
       "      <td>1.858364e+07</td>\n",
       "      <td>1.843872e+07</td>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-29</th>\n",
       "      <td>6132.3061</td>\n",
       "      <td>276083.38</td>\n",
       "      <td>0.77</td>\n",
       "      <td>7.9476</td>\n",
       "      <td>7.3106</td>\n",
       "      <td>7.99</td>\n",
       "      <td>2.4661</td>\n",
       "      <td>0.9757</td>\n",
       "      <td>0.9545</td>\n",
       "      <td>9.1393</td>\n",
       "      <td>9.0616</td>\n",
       "      <td>1.833023e+07</td>\n",
       "      <td>1.818728e+07</td>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-30</th>\n",
       "      <td>6109.6985</td>\n",
       "      <td>241120.60</td>\n",
       "      <td>0.78</td>\n",
       "      <td>7.9183</td>\n",
       "      <td>7.2837</td>\n",
       "      <td>7.96</td>\n",
       "      <td>2.4570</td>\n",
       "      <td>0.9721</td>\n",
       "      <td>0.9510</td>\n",
       "      <td>9.1731</td>\n",
       "      <td>9.0951</td>\n",
       "      <td>1.826265e+07</td>\n",
       "      <td>1.812023e+07</td>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>919 rows × 18 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  收盘价     成交量(手)    量比  市盈率(静态)  市盈率(TTM)  市盈率(动态)     市净率  \\\n",
       "2018-04-02  6873.1586  508996.09  0.74  17.9329   14.0716    13.42  4.7172   \n",
       "2018-04-03  6895.5857  372046.90  0.55  17.9914   14.1175    13.46  4.7326   \n",
       "2018-04-04  6997.2552  491215.51  0.78  18.2567   14.3256    13.66  4.8024   \n",
       "2018-04-09  6835.7801  505261.63  0.93  17.8354   13.9950    13.34  4.6916   \n",
       "2018-04-10  7128.8275  582346.74  1.22  18.6000   14.5950    13.91  4.8927   \n",
       "...               ...        ...   ...      ...       ...      ...     ...   \n",
       "2022-09-26  6190.7090  298663.72  0.73   8.0233    7.3803     8.07  2.4896   \n",
       "2022-09-27  6301.8629  383659.70  1.00   8.1674    7.5128     8.21  2.5343   \n",
       "2022-09-28  6217.0845  257902.22  0.69   8.0575    7.4117     8.10  2.5002   \n",
       "2022-09-29  6132.3061  276083.38  0.77   7.9476    7.3106     7.99  2.4661   \n",
       "2022-09-30  6109.6985  241120.60  0.78   7.9183    7.2837     7.96  2.4570   \n",
       "\n",
       "               市销率  市销率(TTM)  股息率(%)  股息率(TTM)(%)       总市值(万元)      流通市值(万元)  \\\n",
       "2018-04-02  2.5534    2.0223  3.9156       3.9156  2.765431e+07  2.744635e+07   \n",
       "2018-04-03  2.5618    2.0289  3.9029       3.9029  2.774455e+07  2.753591e+07   \n",
       "2018-04-04  2.5995    2.0588  3.8462       3.8462  2.815362e+07  2.794190e+07   \n",
       "2018-04-09  2.5395    2.0113  3.9370       3.9370  2.750392e+07  2.729709e+07   \n",
       "2018-04-10  2.6484    2.0975  3.7752       3.7752  2.868300e+07  2.846731e+07   \n",
       "...            ...       ...     ...          ...           ...           ...   \n",
       "2022-09-26  0.9850    0.9636  9.0531       8.9761  1.850480e+07  1.836049e+07   \n",
       "2022-09-27  1.0027    0.9809  8.8934       8.8177  1.883705e+07  1.869015e+07   \n",
       "2022-09-28  0.9892    0.9677  9.0147       8.9380  1.858364e+07  1.843872e+07   \n",
       "2022-09-29  0.9757    0.9545  9.1393       9.0616  1.833023e+07  1.818728e+07   \n",
       "2022-09-30  0.9721    0.9510  9.1731       9.0951  1.826265e+07  1.812023e+07   \n",
       "\n",
       "           扣除非经常性损益后的净利润(扣非净利润)  净资产收益率(扣除非经常损益)    销售毛利率    销售净利率  \\\n",
       "2018-04-02       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-03       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-04       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-09       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-10       12632290055.79          17.5548  30.0265  14.1634   \n",
       "...                         ...              ...      ...      ...   \n",
       "2022-09-26       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-27       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-28       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-29       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-30       18566867450.84          18.6260  25.5401  11.8268   \n",
       "\n",
       "                企业自由现金流量  \n",
       "2018-04-02  5.249164e+09  \n",
       "2018-04-03  5.249164e+09  \n",
       "2018-04-04  5.249164e+09  \n",
       "2018-04-09  5.249164e+09  \n",
       "2018-04-10  5.249164e+09  \n",
       "...                  ...  \n",
       "2022-09-26  1.008118e+10  \n",
       "2022-09-27  1.008118e+10  \n",
       "2022-09-28  1.008118e+10  \n",
       "2022-09-29  1.008118e+10  \n",
       "2022-09-30  1.008118e+10  \n",
       "\n",
       "[919 rows x 18 columns]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([stock_price_gl,stock_cw1],axis=1).dropna()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "df504290",
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_cw1=stock_cw.resample(\"d\").bfill()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "c1eeb0d7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>收盘价</th>\n",
       "      <th>成交量(手)</th>\n",
       "      <th>量比</th>\n",
       "      <th>市盈率(静态)</th>\n",
       "      <th>市盈率(TTM)</th>\n",
       "      <th>市盈率(动态)</th>\n",
       "      <th>市净率</th>\n",
       "      <th>市销率</th>\n",
       "      <th>市销率(TTM)</th>\n",
       "      <th>股息率(%)</th>\n",
       "      <th>股息率(TTM)(%)</th>\n",
       "      <th>总市值(万元)</th>\n",
       "      <th>流通市值(万元)</th>\n",
       "      <th>扣除非经常性损益后的净利润(扣非净利润)</th>\n",
       "      <th>净资产收益率(扣除非经常损益)</th>\n",
       "      <th>销售毛利率</th>\n",
       "      <th>销售净利率</th>\n",
       "      <th>企业自由现金流量</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-03-30</th>\n",
       "      <td>7012.2066</td>\n",
       "      <td>506755.48</td>\n",
       "      <td>0.66</td>\n",
       "      <td>18.2957</td>\n",
       "      <td>14.3562</td>\n",
       "      <td>13.69</td>\n",
       "      <td>4.8127</td>\n",
       "      <td>2.6051</td>\n",
       "      <td>2.0632</td>\n",
       "      <td>3.8380</td>\n",
       "      <td>3.8380</td>\n",
       "      <td>2.821378e+07</td>\n",
       "      <td>2.800161e+07</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-03-31</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4186013203.83</td>\n",
       "      <td>6.1326</td>\n",
       "      <td>30.8578</td>\n",
       "      <td>14.1718</td>\n",
       "      <td>6.714461e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-02</th>\n",
       "      <td>6873.1586</td>\n",
       "      <td>508996.09</td>\n",
       "      <td>0.74</td>\n",
       "      <td>17.9329</td>\n",
       "      <td>14.0716</td>\n",
       "      <td>13.42</td>\n",
       "      <td>4.7172</td>\n",
       "      <td>2.5534</td>\n",
       "      <td>2.0223</td>\n",
       "      <td>3.9156</td>\n",
       "      <td>3.9156</td>\n",
       "      <td>2.765431e+07</td>\n",
       "      <td>2.744635e+07</td>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-03</th>\n",
       "      <td>6895.5857</td>\n",
       "      <td>372046.90</td>\n",
       "      <td>0.55</td>\n",
       "      <td>17.9914</td>\n",
       "      <td>14.1175</td>\n",
       "      <td>13.46</td>\n",
       "      <td>4.7326</td>\n",
       "      <td>2.5618</td>\n",
       "      <td>2.0289</td>\n",
       "      <td>3.9029</td>\n",
       "      <td>3.9029</td>\n",
       "      <td>2.774455e+07</td>\n",
       "      <td>2.753591e+07</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-04</th>\n",
       "      <td>6997.2552</td>\n",
       "      <td>491215.51</td>\n",
       "      <td>0.78</td>\n",
       "      <td>18.2567</td>\n",
       "      <td>14.3256</td>\n",
       "      <td>13.66</td>\n",
       "      <td>4.8024</td>\n",
       "      <td>2.5995</td>\n",
       "      <td>2.0588</td>\n",
       "      <td>3.8462</td>\n",
       "      <td>3.8462</td>\n",
       "      <td>2.815362e+07</td>\n",
       "      <td>2.794190e+07</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  收盘价     成交量(手)    量比  市盈率(静态)  市盈率(TTM)  市盈率(动态)     市净率  \\\n",
       "2018-03-30  7012.2066  506755.48  0.66  18.2957   14.3562    13.69  4.8127   \n",
       "2018-03-31        NaN        NaN   NaN      NaN       NaN      NaN     NaN   \n",
       "2018-04-01        NaN        NaN   NaN      NaN       NaN      NaN     NaN   \n",
       "2018-04-02  6873.1586  508996.09  0.74  17.9329   14.0716    13.42  4.7172   \n",
       "2018-04-03  6895.5857  372046.90  0.55  17.9914   14.1175    13.46  4.7326   \n",
       "2018-04-04  6997.2552  491215.51  0.78  18.2567   14.3256    13.66  4.8024   \n",
       "\n",
       "               市销率  市销率(TTM)  股息率(%)  股息率(TTM)(%)       总市值(万元)      流通市值(万元)  \\\n",
       "2018-03-30  2.6051    2.0632  3.8380       3.8380  2.821378e+07  2.800161e+07   \n",
       "2018-03-31     NaN       NaN     NaN          NaN           NaN           NaN   \n",
       "2018-04-01     NaN       NaN     NaN          NaN           NaN           NaN   \n",
       "2018-04-02  2.5534    2.0223  3.9156       3.9156  2.765431e+07  2.744635e+07   \n",
       "2018-04-03  2.5618    2.0289  3.9029       3.9029  2.774455e+07  2.753591e+07   \n",
       "2018-04-04  2.5995    2.0588  3.8462       3.8462  2.815362e+07  2.794190e+07   \n",
       "\n",
       "           扣除非经常性损益后的净利润(扣非净利润)  净资产收益率(扣除非经常损益)    销售毛利率    销售净利率  \\\n",
       "2018-03-30                  NaN              NaN      NaN      NaN   \n",
       "2018-03-31        4186013203.83           6.1326  30.8578  14.1718   \n",
       "2018-04-01       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-02       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-03                  NaN              NaN      NaN      NaN   \n",
       "2018-04-04                  NaN              NaN      NaN      NaN   \n",
       "\n",
       "                企业自由现金流量  \n",
       "2018-03-30           NaN  \n",
       "2018-03-31  6.714461e+09  \n",
       "2018-04-01  5.249164e+09  \n",
       "2018-04-02  5.249164e+09  \n",
       "2018-04-03           NaN  \n",
       "2018-04-04           NaN  "
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([stock_price_gl.iloc[58:62],stock_cw1.iloc[0:3]],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "3dceaf45",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2022-09-30 00:00:00', freq='D')"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_cw1.index.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "efa786c3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2018-03-31 00:00:00', freq='D')"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_cw1.index.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "78c3e72f",
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_cw1=stock_cw.resample(\"d\").bfill()\n",
    "price_cw1=pd.concat([stock_price_gl,stock_cw1],axis=1).loc[stock_cw1.index.min():stock_cw1.index.max()].bfill()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a985f994",
   "metadata": {},
   "outputs": [],
   "source": [
    "['收盘价', '成交量(手)','量比', '市盈率(静态)', '市盈率(TTM)', '市盈率(动态)', '市净率','市销率', '市销率(TTM)', '股息率(%)', '股息率(TTM)(%)','总市值(万元)', '流通市值(万元)']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "6a4025d1",
   "metadata": {},
   "outputs": [],
   "source": [
    "#[d.strftime(\"%Y-%m-%d\")for d in cwzbsj.index.tolist()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "b76d2bca",
   "metadata": {},
   "outputs": [],
   "source": [
    "#cwzbsj.index.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "7e2ec9b6",
   "metadata": {},
   "outputs": [],
   "source": [
    "a=stock_daily[stock_daily[\"股票代码\"]==\"002594.SZ\"][\"收盘价\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "6b91ebac",
   "metadata": {},
   "outputs": [],
   "source": [
    "c=cwzbsj[cwzbsj[\"股票代码\"]==\"000651.SZ\"][['扣除非经常性损益后的净利润(扣非净利润)','净资产收益率(扣除非经常损益)','销售毛利率','销售净利率','企业自由现金流量']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "2e81d837",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>扣除非经常性损益后的净利润(扣非净利润)</th>\n",
       "      <th>净资产收益率(扣除非经常损益)</th>\n",
       "      <th>销售毛利率</th>\n",
       "      <th>销售净利率</th>\n",
       "      <th>企业自由现金流量</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>报告期</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-03-31</th>\n",
       "      <td>4186013203.83</td>\n",
       "      <td>6.1326</td>\n",
       "      <td>30.8578</td>\n",
       "      <td>14.1718</td>\n",
       "      <td>6.714461e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-01</th>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-02</th>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-03</th>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-04-04</th>\n",
       "      <td>12632290055.79</td>\n",
       "      <td>17.5548</td>\n",
       "      <td>30.0265</td>\n",
       "      <td>14.1634</td>\n",
       "      <td>5.249164e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-26</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-27</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-28</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-29</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2022-09-30</th>\n",
       "      <td>18566867450.84</td>\n",
       "      <td>18.6260</td>\n",
       "      <td>25.5401</td>\n",
       "      <td>11.8268</td>\n",
       "      <td>1.008118e+10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1645 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           扣除非经常性损益后的净利润(扣非净利润)  净资产收益率(扣除非经常损益)    销售毛利率    销售净利率  \\\n",
       "报告期                                                                  \n",
       "2018-03-31        4186013203.83           6.1326  30.8578  14.1718   \n",
       "2018-04-01       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-02       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-03       12632290055.79          17.5548  30.0265  14.1634   \n",
       "2018-04-04       12632290055.79          17.5548  30.0265  14.1634   \n",
       "...                         ...              ...      ...      ...   \n",
       "2022-09-26       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-27       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-28       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-29       18566867450.84          18.6260  25.5401  11.8268   \n",
       "2022-09-30       18566867450.84          18.6260  25.5401  11.8268   \n",
       "\n",
       "                企业自由现金流量  \n",
       "报告期                       \n",
       "2018-03-31  6.714461e+09  \n",
       "2018-04-01  5.249164e+09  \n",
       "2018-04-02  5.249164e+09  \n",
       "2018-04-03  5.249164e+09  \n",
       "2018-04-04  5.249164e+09  \n",
       "...                  ...  \n",
       "2022-09-26  1.008118e+10  \n",
       "2022-09-27  1.008118e+10  \n",
       "2022-09-28  1.008118e+10  \n",
       "2022-09-29  1.008118e+10  \n",
       "2022-09-30  1.008118e+10  \n",
       "\n",
       "[1645 rows x 5 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c.resample(\"d\").bfill()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e44570a9",
   "metadata": {},
   "outputs": [],
   "source": [
    "cwzbsj[cwzbsj[\"股票代码\"]==\"000651.SZ\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f72a8921",
   "metadata": {},
   "source": [
    "## 多股比较分析\n",
    "\n",
    "* 安全性指标\n",
    "\n",
    "⑴流动比率\n",
    "流动比率=流动资产/流动负债，参考值为2，太高说明利用率不够，太低则有偿债风险。\n",
    "\n",
    "⑵速动比率\n",
    "速动比率=(流动资产-存货)/流动负债，参考值为1，太高说明利用率不够，太低则有偿债风险。\n",
    "\n",
    "⑶资产负债率\n",
    "资产负债率=负债总额/资产总额；参考值为50%。如果总资产利润率高于借款利息率，则越高越好。反之，则不宜过高。\n",
    "\n",
    "⑷净资产负债率\n",
    "净资产负债率=负债总额/所有者权益；净资产负债率高的公司，其生意模式属于高风险高回报；净资产负债率低的属于低风险低回报。\n",
    "\n",
    "⑸利息保障倍数\n",
    "利息保障倍数=息税前利润(EBIT)/利息费用=(利润总额+财务费用)/利息费用。该指标反应企业支付利息的能力，数值越大，支付利息的能力越强。\n",
    "\n",
    "⑹还债能力\n",
    "用“现金及现金等价物/带息负债”来考查公司的还债能力，参考值为1。\n",
    "\n",
    "* 盈利能力指标\n",
    "\n",
    "⑴营业利润率\n",
    "营业利润率=营业利润/营业收入。该指标反映企业收入中有多少能转化成利润，一般来说，越大越好。\n",
    "\n",
    "⑵销售毛利率\n",
    "销售毛利率=毛利/营业收入。巴菲特三要素中的重要指标，参考值40%。\n",
    "\n",
    "⑶销售净利率\n",
    "销售净利率=净利润(含少数股东损益)/营业收入。巴菲特三要素中的重要指标，参考值5%。\n",
    "\n",
    "⑷总资产收益率\n",
    "总资产收益率=净利润/平均总资产。\n",
    "\n",
    "⑸净资产收益率\n",
    "净资产收益率=净利润/净资产。巴菲特三要素中最重要的指标。巴菲特曾提出，如果只能看一个指标，那么就看净资产收益率。该指标为长期投资必看指标，投资某公司持有10年以上时，年化收益率基本就是净资产收益的平均值，参考值15%。\n",
    "\n",
    "* 杜邦分析\n",
    "净资产收益率\n",
    "=净利润/净资产\n",
    "=(净利润/销售收入)×(销售收入/总资产)×(总资产/净资产)\n",
    "=净利润率×总资产周转率×财务杠杆率\n",
    "=12.1531×0.6334×3.0834%\n",
    "杜邦分析通过对净资产收益率的拆分，反应出该公司主要靠什么盈利，要警惕这个主要因素下降，如：\n",
    "高净利润的消费品公司，要警惕其利润下降或品牌影响力降低；\n",
    "高总资产周转率的公司为“超市模式”，要警惕其周转率的降低；\n",
    "高财务杠杆比率的公司为“银行模式”，要警惕杠杆降低、筹资困难等因素。\n",
    "\n",
    "⑴扣非净利润率\n",
    "扣非净利润率=扣除非经常性损益后的净利润(扣非净利润)/营业收入。\n",
    "\n",
    "⑵总资产周转率\n",
    "总资产周转率=销售收入/总资产。\n",
    "\n",
    "⑶财务杠杆率\n",
    "财务杠杆率=总资产/净资产。\n",
    "\n",
    "* 成长性指标分析\n",
    "\n",
    "⑴营业收入及增长率\n",
    "\n",
    "⑵净利润及增长率\n",
    "—一般来讲，企业可持续发展的正常增长率为8%-15%，太低了成长性不够，太高了不可持续容易“暴雷”。\n",
    "\n",
    "* 管理水平指标分析\n",
    "\n",
    "⑴应收账款周转率\n",
    "\n",
    "⑵存货周转率\n",
    "\n",
    "⑶固定资产周转率\n",
    "\n",
    "* 财务风险研判及排雷\n",
    "\n",
    "1.带息负债率\n",
    "带息负债率=带息债务/总资产，参考值为60%，如超过60%则较为激进。\n",
    "\n",
    "2.有形资产/总资产\n",
    "有形资产/总资产，比重越大，越倾向于重资产公司，资产过重的公司，在出现行业拐点时要警惕。\n",
    "\n",
    "3.有形资产利润率\n",
    "有形资产利润率=息税前利润/有形资产，代表有形资产的获利能力，可做判断是否是重资产公司的补充，该指标如果高于当年银行贷款的2倍则属于轻资产。\n",
    "\n",
    "4.应收账款/总资产\n",
    "应收账款占比=(应收账款+其他应收+应收票据)/总资产，参考值30%。比例过大，则别人欠款太多，业务不好做，有坏账风险。如比例突然大幅增加，则警惕销售环节是否出现问题。（如果在应收票据中再减去银行承兑，则数据更为准确，有精力的读者可自行查阅相应公司财报。）\n",
    "\n",
    "5.其他应收账款/总资产\n",
    "其他应收账款占比=其他应收账款/总资产。其他应收账款占比做为对应收账款占比的补充，其他应收账款突然大幅增加，比起应收账款大幅增加更要引起警惕。\n",
    "\n",
    "6.货币资金/带息债务\n",
    "该指标反应公司在逆周期环境下抵御危机的能力。\n",
    "\n",
    "7.营收费用率\n",
    "营收费用率=(销售费用+管理费用+财务费用)/营业总收入，指花了多少费用才创造出当前的收入，反应公司管理水平。\n",
    "\n",
    "8.毛利费用率\n",
    "毛利费用率=(销售费用+管理费用+财务费用)/毛利润，与营收费用率相似，指花了多少费用才创造目前的利润，反应公司管理水平。小于30%可持续关注，大于70%时警惕。\n",
    "\n",
    "9.净利润变现率\n",
    "净利润变现率=经营活动产生的现金流净额/净利润，该指标反应公司赚的钱有多少装进了口袋里。（比如是不是打了白条（应收账款），是不是还了债（高负债率），是不是对外投资了？）参考值为100%，越大越好。\n",
    "注：现金流分析不适用于金融类或成长类的科技公司。\n",
    "\n",
    "10.现金流分析\n",
    "\n",
    "注：现金流分析不适用于金融类或成长类的科技公司。\n",
    "\n",
    "⑴现金流类型\n",
    "\n",
    "见图\n",
    "\n",
    "⑵期末现金及现金等价物余额\n",
    "期末现金及现金等价物=现金及现金等价物净增加额+期初现金及现金等价物\n",
    "=(经营活动现金流净额+投资活动现金流净额+筹资活动现金流净额)-汇率变动对现金的影响。\n",
    "\n",
    "⑶企业自由现金流\n",
    "企业自由现金流=企业从经营活动赚来的钱-维持企业盈利能力必须再投资的钱。\n",
    "\n",
    "11.高管增减持统计\n",
    "近十年内发生的高管增减持情况统计：\n",
    "\n",
    "12.会计事务所及审计意见\n",
    "审计意见分为：标准无保留意见、带强调事项段的无保留意见、保留意见、否定意见和无法表示意见。只有“标准的无保留意见”的公司才值得研究，其他的一律排除。另外，警惕频繁更换会计事务所的公司，不排除有严重财务问题。\n",
    "\n",
    "13.高管人员变更\n",
    "对于频繁更换高管，特别是财务总监的公司要引起警惕。\n",
    "\n",
    "\n",
    "* 估值指标分析\n",
    "1.分红比率\n",
    "分红比率=分红/净利润=每股分红/每股收益，该指标反应公司把赚到的钱，拿出来多少分红给了股东。\n",
    "\n",
    "2.常用指标对比\n",
    "股息率=分红/股价。\n",
    "\n",
    "市盈率=股价/每股收益=总市值/净利润。——适用于医药消费、食品饮料等弱周期公司，不适于钢铁、化工、有色、科技、生物工程等周期性行业或新兴科技公司\n",
    "\n",
    "市净率=股价/每股净资产=总市值/净资产。——适用于钢铁、有色、煤炭、银行、化工、石油、大型基建等重资公司或周期性行业。不适用于轻资产、新兴高科技行业。\n",
    "\n",
    "市销率=股价/每股营业收入=总市值/营业收入。——适用于轻资产、高营收、低利润的成长股，如高科技互联企业。缺点是不反映负债情况（如高杠杆）和营收质量（如降价促销）。\n",
    "\n",
    "市现率=股价/每股现金流量净额。——适用于辅助验证市盈率的质量，单独使用作用不大。熊市有效，牛市忽略。\n",
    "\n",
    "企业价值倍数=EV/EBITDA。——适用于重资产行业和现金流高于利润的行业，可过滤高杠杆公司，不适用于固定资产更新快的公司、亏损的公司和控股结构公司。\n",
    "\n",
    "PEG=市盈率/净利润增长率。——适用于弱周期和业绩增长稳定的公司，如消费品、医药行业，不适用于业绩爆发式或是较大波动的公司，对未来的净利润增长率无法准确测算。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b87104a3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "Image(filename=\"自由现金流分析.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60957d4c",
   "metadata": {},
   "source": [
    "## 同行业多股特征的输出与可视化\n",
    "\n",
    "* 读入公司基本信息数据，并获得同行业公司列表\n",
    "\n",
    "* 结合财务指标数据获取列表公司对应特征，并通过piovt生成透视表输出"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "a790db66",
   "metadata": {},
   "outputs": [],
   "source": [
    "stock_hy=pd.read_excel(r'G:\\BaiduNetdiskDownload\\上市公司基本信息列表\\上市公司基本信息列表-20230217.xlsx')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "fc29fb88",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "238    白色家电\n",
       "Name: 二级行业, dtype: object"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_hy[stock_hy[\"股票代码\"]==\"000651.SZ\"][\"二级行业\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "fdd3f663",
   "metadata": {},
   "outputs": [],
   "source": [
    "cw_hy=pd.merge(cwzbsj,stock_hy[[\"股票代码\",c]],on=\"股票代码\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "9126bb8b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "76      000333.SZ\n",
       "95      000418.SZ\n",
       "127     000521.SZ\n",
       "133     000527.SZ\n",
       "238     000651.SZ\n",
       "420     000893.SZ\n",
       "443     000921.SZ\n",
       "463     000951.SZ\n",
       "711     002139.SZ\n",
       "831     002260.SZ\n",
       "1238    002668.SZ\n",
       "1251    002681.SZ\n",
       "1833    300247.SZ\n",
       "1835    300249.SZ\n",
       "3155    600336.SH\n",
       "3457    600690.SH\n",
       "3478    600711.SH\n",
       "3620    600854.SH\n",
       "3711    600983.SH\n",
       "Name: 股票代码, dtype: object"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_hy[stock_hy[\"二级行业\"]==\"白色家电\"][\"股票代码\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "d6802fe5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>股票代码</th>\n",
       "      <th>公告日期</th>\n",
       "      <th>基本每股收益</th>\n",
       "      <th>稀释每股收益</th>\n",
       "      <th>每股营业总收入</th>\n",
       "      <th>每股营业收入</th>\n",
       "      <th>每股资本公积</th>\n",
       "      <th>每股盈余公积</th>\n",
       "      <th>每股未分配利润</th>\n",
       "      <th>...</th>\n",
       "      <th>营业利润同比增长率(%)(单季度)</th>\n",
       "      <th>营业利润环比增长率(%)(单季度)</th>\n",
       "      <th>净利润同比增长率(%)(单季度)</th>\n",
       "      <th>净利润环比增长率(%)(单季度)</th>\n",
       "      <th>归属母公司股东的净利润同比增长率(%)(单季度)</th>\n",
       "      <th>归属母公司股东的净利润环比增长率(%)(单季度)</th>\n",
       "      <th>净资产同比增长率</th>\n",
       "      <th>研发费用</th>\n",
       "      <th>更新标识</th>\n",
       "      <th>二级行业</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1365</th>\n",
       "      <td>46</td>\n",
       "      <td>000333.SZ</td>\n",
       "      <td>20180428</td>\n",
       "      <td>0.80</td>\n",
       "      <td>0.79</td>\n",
       "      <td>10.6755</td>\n",
       "      <td>10.5919</td>\n",
       "      <td>2.4393</td>\n",
       "      <td>0.5896</td>\n",
       "      <td>8.0321</td>\n",
       "      <td>...</td>\n",
       "      <td>22.6013</td>\n",
       "      <td>99.5537</td>\n",
       "      <td>20.4857</td>\n",
       "      <td>124.9509</td>\n",
       "      <td>20.7611</td>\n",
       "      <td>129.9803</td>\n",
       "      <td>20.8934</td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1366</th>\n",
       "      <td>47</td>\n",
       "      <td>000333.SZ</td>\n",
       "      <td>20180831</td>\n",
       "      <td>1.97</td>\n",
       "      <td>1.94</td>\n",
       "      <td>21.6897</td>\n",
       "      <td>21.5219</td>\n",
       "      <td>2.6141</td>\n",
       "      <td>0.5858</td>\n",
       "      <td>7.9472</td>\n",
       "      <td>...</td>\n",
       "      <td>15.4136</td>\n",
       "      <td>41.3261</td>\n",
       "      <td>18.5318</td>\n",
       "      <td>44.0700</td>\n",
       "      <td>18.9183</td>\n",
       "      <td>46.1240</td>\n",
       "      <td>19.5853</td>\n",
       "      <td>None</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1367</th>\n",
       "      <td>48</td>\n",
       "      <td>000333.SZ</td>\n",
       "      <td>20181031</td>\n",
       "      <td>2.72</td>\n",
       "      <td>2.69</td>\n",
       "      <td>31.2138</td>\n",
       "      <td>30.9657</td>\n",
       "      <td>2.6656</td>\n",
       "      <td>0.5843</td>\n",
       "      <td>8.6729</td>\n",
       "      <td>...</td>\n",
       "      <td>24.3846</td>\n",
       "      <td>-32.1560</td>\n",
       "      <td>16.6303</td>\n",
       "      <td>-34.7107</td>\n",
       "      <td>18.5471</td>\n",
       "      <td>-35.3777</td>\n",
       "      <td>16.3540</td>\n",
       "      <td>6349429000.0</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1368</th>\n",
       "      <td>49</td>\n",
       "      <td>000333.SZ</td>\n",
       "      <td>20190420</td>\n",
       "      <td>3.08</td>\n",
       "      <td>3.05</td>\n",
       "      <td>39.2944</td>\n",
       "      <td>38.9710</td>\n",
       "      <td>2.7692</td>\n",
       "      <td>0.7623</td>\n",
       "      <td>8.8192</td>\n",
       "      <td>...</td>\n",
       "      <td>5.5514</td>\n",
       "      <td>-56.9573</td>\n",
       "      <td>2.0073</td>\n",
       "      <td>-51.7910</td>\n",
       "      <td>1.9701</td>\n",
       "      <td>-53.0454</td>\n",
       "      <td>12.6593</td>\n",
       "      <td>9810805000.0</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1369</th>\n",
       "      <td>50</td>\n",
       "      <td>000333.SZ</td>\n",
       "      <td>20190430</td>\n",
       "      <td>0.94</td>\n",
       "      <td>0.93</td>\n",
       "      <td>11.4335</td>\n",
       "      <td>11.3889</td>\n",
       "      <td>2.3370</td>\n",
       "      <td>0.7692</td>\n",
       "      <td>9.8272</td>\n",
       "      <td>...</td>\n",
       "      <td>13.7584</td>\n",
       "      <td>175.6451</td>\n",
       "      <td>15.8605</td>\n",
       "      <td>155.5006</td>\n",
       "      <td>16.6050</td>\n",
       "      <td>162.9874</td>\n",
       "      <td>13.1071</td>\n",
       "      <td>2205598000.0</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64634</th>\n",
       "      <td>72</td>\n",
       "      <td>600983.SH</td>\n",
       "      <td>20211030</td>\n",
       "      <td>-0.30</td>\n",
       "      <td>-0.30</td>\n",
       "      <td>4.8381</td>\n",
       "      <td>4.8381</td>\n",
       "      <td>1.5960</td>\n",
       "      <td>0.3619</td>\n",
       "      <td>1.3795</td>\n",
       "      <td>...</td>\n",
       "      <td>-5880.0486</td>\n",
       "      <td>24.1951</td>\n",
       "      <td>-5003.9129</td>\n",
       "      <td>6.2720</td>\n",
       "      <td>-5003.9129</td>\n",
       "      <td>6.2720</td>\n",
       "      <td>-7.7310</td>\n",
       "      <td>93704172.8</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64635</th>\n",
       "      <td>73</td>\n",
       "      <td>600983.SH</td>\n",
       "      <td>20220422</td>\n",
       "      <td>-0.77</td>\n",
       "      <td>-0.77</td>\n",
       "      <td>6.4339</td>\n",
       "      <td>6.4339</td>\n",
       "      <td>1.5960</td>\n",
       "      <td>0.3619</td>\n",
       "      <td>0.9073</td>\n",
       "      <td>...</td>\n",
       "      <td>-1038.8689</td>\n",
       "      <td>-184.4807</td>\n",
       "      <td>-910.6995</td>\n",
       "      <td>-269.5341</td>\n",
       "      <td>-910.6995</td>\n",
       "      <td>-269.5341</td>\n",
       "      <td>-16.5970</td>\n",
       "      <td>113723450.62</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64636</th>\n",
       "      <td>74</td>\n",
       "      <td>600983.SH</td>\n",
       "      <td>20220422</td>\n",
       "      <td>-0.02</td>\n",
       "      <td>-0.02</td>\n",
       "      <td>1.5890</td>\n",
       "      <td>1.5890</td>\n",
       "      <td>1.5960</td>\n",
       "      <td>0.3619</td>\n",
       "      <td>0.8834</td>\n",
       "      <td>...</td>\n",
       "      <td>40.6615</td>\n",
       "      <td>91.4425</td>\n",
       "      <td>25.7083</td>\n",
       "      <td>94.9550</td>\n",
       "      <td>25.7083</td>\n",
       "      <td>94.9550</td>\n",
       "      <td>-16.5389</td>\n",
       "      <td>28792051.0</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64637</th>\n",
       "      <td>75</td>\n",
       "      <td>600983.SH</td>\n",
       "      <td>20220830</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>3.1913</td>\n",
       "      <td>3.1913</td>\n",
       "      <td>1.5960</td>\n",
       "      <td>0.3619</td>\n",
       "      <td>0.8926</td>\n",
       "      <td>...</td>\n",
       "      <td>129.1313</td>\n",
       "      <td>257.8558</td>\n",
       "      <td>106.6864</td>\n",
       "      <td>138.2656</td>\n",
       "      <td>106.6864</td>\n",
       "      <td>138.2656</td>\n",
       "      <td>-13.7817</td>\n",
       "      <td>58721157.72</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64638</th>\n",
       "      <td>76</td>\n",
       "      <td>600983.SH</td>\n",
       "      <td>20221028</td>\n",
       "      <td>-0.10</td>\n",
       "      <td>-0.10</td>\n",
       "      <td>4.3606</td>\n",
       "      <td>4.3606</td>\n",
       "      <td>1.5960</td>\n",
       "      <td>0.3619</td>\n",
       "      <td>0.8091</td>\n",
       "      <td>...</td>\n",
       "      <td>39.0554</td>\n",
       "      <td>-258.5893</td>\n",
       "      <td>34.6675</td>\n",
       "      <td>-1015.8131</td>\n",
       "      <td>34.6675</td>\n",
       "      <td>-1015.8131</td>\n",
       "      <td>-13.1657</td>\n",
       "      <td>89349395.84</td>\n",
       "      <td>1</td>\n",
       "      <td>白色家电</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>326 rows × 168 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       index       股票代码      公告日期  基本每股收益  稀释每股收益  每股营业总收入   每股营业收入  每股资本公积  \\\n",
       "1365      46  000333.SZ  20180428    0.80    0.79  10.6755  10.5919  2.4393   \n",
       "1366      47  000333.SZ  20180831    1.97    1.94  21.6897  21.5219  2.6141   \n",
       "1367      48  000333.SZ  20181031    2.72    2.69  31.2138  30.9657  2.6656   \n",
       "1368      49  000333.SZ  20190420    3.08    3.05  39.2944  38.9710  2.7692   \n",
       "1369      50  000333.SZ  20190430    0.94    0.93  11.4335  11.3889  2.3370   \n",
       "...      ...        ...       ...     ...     ...      ...      ...     ...   \n",
       "64634     72  600983.SH  20211030   -0.30   -0.30   4.8381   4.8381  1.5960   \n",
       "64635     73  600983.SH  20220422   -0.77   -0.77   6.4339   6.4339  1.5960   \n",
       "64636     74  600983.SH  20220422   -0.02   -0.02   1.5890   1.5890  1.5960   \n",
       "64637     75  600983.SH  20220830   -0.01   -0.01   3.1913   3.1913  1.5960   \n",
       "64638     76  600983.SH  20221028   -0.10   -0.10   4.3606   4.3606  1.5960   \n",
       "\n",
       "       每股盈余公积  每股未分配利润  ... 营业利润同比增长率(%)(单季度) 营业利润环比增长率(%)(单季度)  \\\n",
       "1365   0.5896   8.0321  ...           22.6013           99.5537   \n",
       "1366   0.5858   7.9472  ...           15.4136           41.3261   \n",
       "1367   0.5843   8.6729  ...           24.3846          -32.1560   \n",
       "1368   0.7623   8.8192  ...            5.5514          -56.9573   \n",
       "1369   0.7692   9.8272  ...           13.7584          175.6451   \n",
       "...       ...      ...  ...               ...               ...   \n",
       "64634  0.3619   1.3795  ...        -5880.0486           24.1951   \n",
       "64635  0.3619   0.9073  ...        -1038.8689         -184.4807   \n",
       "64636  0.3619   0.8834  ...           40.6615           91.4425   \n",
       "64637  0.3619   0.8926  ...          129.1313          257.8558   \n",
       "64638  0.3619   0.8091  ...           39.0554         -258.5893   \n",
       "\n",
       "      净利润同比增长率(%)(单季度)  净利润环比增长率(%)(单季度)  归属母公司股东的净利润同比增长率(%)(单季度)  \\\n",
       "1365           20.4857          124.9509                   20.7611   \n",
       "1366           18.5318           44.0700                   18.9183   \n",
       "1367           16.6303          -34.7107                   18.5471   \n",
       "1368            2.0073          -51.7910                    1.9701   \n",
       "1369           15.8605          155.5006                   16.6050   \n",
       "...                ...               ...                       ...   \n",
       "64634       -5003.9129            6.2720                -5003.9129   \n",
       "64635        -910.6995         -269.5341                 -910.6995   \n",
       "64636          25.7083           94.9550                   25.7083   \n",
       "64637         106.6864          138.2656                  106.6864   \n",
       "64638          34.6675        -1015.8131                   34.6675   \n",
       "\n",
       "       归属母公司股东的净利润环比增长率(%)(单季度)  净资产同比增长率          研发费用  更新标识  二级行业  \n",
       "1365                   129.9803   20.8934          None     1  白色家电  \n",
       "1366                    46.1240   19.5853          None     1  白色家电  \n",
       "1367                   -35.3777   16.3540  6349429000.0     1  白色家电  \n",
       "1368                   -53.0454   12.6593  9810805000.0     1  白色家电  \n",
       "1369                   162.9874   13.1071  2205598000.0     1  白色家电  \n",
       "...                         ...       ...           ...   ...   ...  \n",
       "64634                    6.2720   -7.7310    93704172.8     1  白色家电  \n",
       "64635                 -269.5341  -16.5970  113723450.62     1  白色家电  \n",
       "64636                   94.9550  -16.5389    28792051.0     1  白色家电  \n",
       "64637                  138.2656  -13.7817   58721157.72     1  白色家电  \n",
       "64638                -1015.8131  -13.1657   89349395.84     1  白色家电  \n",
       "\n",
       "[326 rows x 168 columns]"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cw_hy[cw_hy[\"二级行业\"]==\"白色家电\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "198ed350",
   "metadata": {},
   "outputs": [],
   "source": [
    "cw_hy=pd.merge(cwzbsj,stock_hy[[\"股票代码\",\"二级行业\"]],on=\"股票代码\")\n",
    "cw_hy_pivot=cw_hy[cw_hy[\"二级行业\"]==hy].pivot(index=\"报告期\",values='流动资产/总资产', columns='股票代码')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ca718c86",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "a897829e",
   "metadata": {},
   "source": [
    "* 输出各个公司的特征曲线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b8f66fd4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "543757ce",
   "metadata": {},
   "source": [
    "* 通过checkbox实现选择不同特征，展现其对应图表，并通过上面的逻辑对所有checkbox归类"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ab80c5b3",
   "metadata": {},
   "source": [
    "# 构建多页股票分析产品\n",
    "\n",
    "## 首页\n",
    "\n",
    "* 读入数据并构建会话状态存储所有数据\n",
    "\n",
    "* 输出所有股票的简称与股票代码"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7e47313e",
   "metadata": {},
   "source": [
    "* 以下代码来自app，都不能在这里运行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "59eba3f4",
   "metadata": {},
   "outputs": [],
   "source": [
    "#会话状态初始化方法\n",
    "if 'cwzbsj' not in st.session_state:\n",
    "    st.session_state.cwzbsj = read_cw()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8a3249aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "#注意做成索引的列不要丢掉\n",
    "stock_daily.set_index(\"交易日期\",inplace=True,drop=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e09dd93c",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "f7fb8ef3",
   "metadata": {},
   "source": [
    "## 个股分析页\n",
    "\n",
    "* 基于上面的单股分析代码，构建单股分析页，\n",
    "* 首先展示财务数据与行情数据的比较图\n",
    "* 然后分别展示使用checkbox来选择财务与行情数据的展示图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a0be30f1",
   "metadata": {},
   "outputs": [],
   "source": [
    "#通过text_input来输入股票简称\n",
    "stock_name = st.sidebar.text_input('输入股票简称', '格力电器')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "44df171c",
   "metadata": {},
   "outputs": [],
   "source": [
    "#通过循环来布置checkbox按钮\n",
    "st.sidebar.markdown(\"### 行情指标\")\n",
    "for i in stock_price_gl.columns:\n",
    "    agree1 = st.sidebar.checkbox(i)\n",
    "    if agree1:\n",
    "        st.write(i)\n",
    "        st_echarts(line_hq(i))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49764f70",
   "metadata": {},
   "source": [
    "## 行业分析页\n",
    "\n",
    "* 展示同行业多股的财务指标可视化线图，用checkbox来选择\n",
    "\n",
    "* 最上方展示同行业多股的收盘价增长倍率的变化曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5753708f",
   "metadata": {},
   "outputs": [],
   "source": [
    "#分类输出各个财务指标\n",
    "st.sidebar.markdown(\"### 安全性指标\")\n",
    "an_quan=[\"流动比率\",\"速动比率\",\"资产负债率\"]\n",
    "for i in an_quan:\n",
    "    agree1 = st.sidebar.checkbox(i)\n",
    "    if agree1:\n",
    "        cw_muti_index(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7bb0eab7",
   "metadata": {},
   "outputs": [],
   "source": [
    "#注意两边字段名称并不一致，需要对应一下\n",
    "st.sidebar.markdown(\"### 盈利能力指标\")\n",
    "an_quan=[\"营业利润/营业总收入\",\"销售毛利率\",\"销售净利率\",\"净资产收益率(扣除非经常损益)\",\"总资产报酬率\"]\n",
    "st.sidebar.markdown(\"### 杜邦分析\")\n",
    "an_quan=[\"扣除非经常损益后的单季度净利润\",\"总资产周转率\",\"总资产净利率\"]\n",
    "st.sidebar.markdown(\"### 成长性指标分析\")\n",
    "an_quan=[\"营业总收入同比增长率(%)(单季度)\",\"净利润同比增长率(%)(单季度)\",\"扣除非经常性损益后的净利润(扣非净利润)\",'每股营业收入','研发费用']\n",
    "st.sidebar.markdown(\"### 管理水平指标\")\n",
    "an_quan=[\"应收账款周转率\",\"存货周转率\",\"固定资产周转率\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "43fb116c",
   "metadata": {},
   "outputs": [],
   "source": [
    "#获取多个股票的收盘价数据，调整数据框结构便于作图\n",
    "price_list=st.session_state.stock_daily[st.session_state.stock_daily['股票简称'].isin(stock_list)].pivot(index=\"交易日期\",columns=\"股票简称\",values=\"收盘价\").fillna(method='bfill').fillna(method='ffill')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0880b7d6",
   "metadata": {},
   "outputs": [],
   "source": [
    "#计算股价增长倍率\n",
    "(data[i]/data[i].iloc[0]).tolist()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c4e06809",
   "metadata": {},
   "source": [
    "## 自定义多股分析页\n",
    "\n",
    "* 与行业分析页类似，但是多个股票通过自己输入来完成"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "08b504d0",
   "metadata": {},
   "outputs": [],
   "source": [
    "#输入股票，以空格分割，并读入\n",
    "stock_input = st.text_input('请输入股票列表,空格分割', '格力电器 比亚迪')\n",
    "stock_list=stock_input.split(\" \")\n",
    "cw_xx_hy=cw_xx[cw_xx[\"股票简称\"].isin(stock_list)]"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "233.909px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
